Supportnet / Forum / Tabellenkalkulation
Ersten und letzten Wert einer Messreihe kopieren
Frage
Hallo,
ich habe eine große Messreihe. Ich möchte den ersten und den letzten Wert einer Reihe in ein 2. Tabellenblatt mit dazugehörigem Datum kopieren. Dabei interessieren mich nur das Datum und der dazugehörige Wert des Beginns und des Endes der Aufzeichnung.
Das Beispiel macht es etwas deutlicher:
Die Messreihe hat folgendes Format:
1.1.06 2.1.06 3.1.06 4.1.06 5.1.06
Proband 1 10 10 8 [leer] [leer]
Proband 2 [leer] 20 [leer] [leer] 15
Proband 3 10 [leer] 8 12 [leer]
Am Ende soll die Tabelle auf einem anderen Tabellenblatt so aussehen:
1. Datum 1. Wert Letztes Datum Letzter Wert
Proband 1 1.1.06 10 3.1.06 8
Proband 2 2.1.06 20 5.1.06 15
Proband 3 1.1.06 10 4.1.06 12
Es geht dabei um mehrere tausend Probanden über etwas mehr als ein halbes Jahr.
Wie auch in dem Beispiel, ist die Messreihe manchmal (auch für mehrere Tage) unterbrochen, d.h. leere Zellen.
Ein Makro müsste also für den 1. Wert zeilenweise beginnend ab Spalte 2 die erste nichtleere Zelle finden und mit dazugehörigem Datum (Spaltenüberschrift) in ein neues Tabellenblatt kopieren. Für den letzten Wert müsste rückwärts ab Spalte 256 gesucht werden.
Für Hilfe bin ich sehr dankbar.
Antwort 1 von Aliba
Hi,
wenns auch ne Formellösung sein darf, dann schau mal hier:
http://www.netupload.de/detail.php?img=54a5a3b6bee03fc9646bc81230e2...
CU Aliba
wenns auch ne Formellösung sein darf, dann schau mal hier:
http://www.netupload.de/detail.php?img=54a5a3b6bee03fc9646bc81230e2...
CU Aliba
Antwort 2 von DukeNT
Hi,
oder per Macro:
Sub auswerten()
Set tb1 = Sheets("Tabelle1")
Set tb2 = Sheets("Tabelle2")
lZeile = tb1.Range("A65500").End(xlUp).Row
For a = 2 To lZeile
lDatum = tb1.Cells(a, 256).End(xlToLeft).Column
lWert = tb1.Cells(a, 256).End(xlToLeft).Value
If tb1.Cells(a, 2).Value = "" Then eDatum = tb1.Cells(a, 1).End(xlToRight).Column: _
eWert = tb1.Cells(a, 1).End(xlToRight).Value Else eDatum = tb1.Cells(a, 2).Column: _
eWert = tb1.Cells(a, 1).End(xlToRight).Value
tb2.Cells(a, 2).Value = tb1.Cells(1, eDatum).Value
tb2.Cells(a, 3).Value = eWert
tb2.Cells(a, 4).Value = tb1.Cells(1, lDatum).Value
tb2.Cells(a, 5).Value = lWert
Next
End Sub
Gruß Duke
oder per Macro:
Sub auswerten()
Set tb1 = Sheets("Tabelle1")
Set tb2 = Sheets("Tabelle2")
lZeile = tb1.Range("A65500").End(xlUp).Row
For a = 2 To lZeile
lDatum = tb1.Cells(a, 256).End(xlToLeft).Column
lWert = tb1.Cells(a, 256).End(xlToLeft).Value
If tb1.Cells(a, 2).Value = "" Then eDatum = tb1.Cells(a, 1).End(xlToRight).Column: _
eWert = tb1.Cells(a, 1).End(xlToRight).Value Else eDatum = tb1.Cells(a, 2).Column: _
eWert = tb1.Cells(a, 1).End(xlToRight).Value
tb2.Cells(a, 2).Value = tb1.Cells(1, eDatum).Value
tb2.Cells(a, 3).Value = eWert
tb2.Cells(a, 4).Value = tb1.Cells(1, lDatum).Value
tb2.Cells(a, 5).Value = lWert
Next
End Sub
Gruß Duke
Antwort 3 von mbo030
Super, funktioniert beides wunderbar. Vielen Dank!

