Excel 2007 - Monatsauswertung

phil.

búho retirado
Registriert
Feb. 2004
Beiträge
28.960
Aus eine Tabelle mit mehreren Eingabewerten, sollen nur die letzten Werte für eine Monatsauswertung in eine neue Tabelle übertragen werden.

Tabelle 1 - Eingabe:
[TABLE="class: grid, width: 320"]
[TR]
[TD="width: 80, align: right"]08.10.2012[/TD]
[TD="width: 80, align: right"]13[/TD]
[TD="width: 80, align: right"]9[/TD]
[TD="width: 80, align: right"]4[/TD]
[/TR]
[TR]
[TD="align: right"]18.10.2012[/TD]
[TD="align: right"]134[/TD]
[TD="align: right"]101[/TD]
[TD="align: right"]53[/TD]
[/TR]
[TR]
[TD="align: right"]26.10.2012[/TD]
[TD="align: right"]216[/TD]
[TD="align: right"]160[/TD]
[TD="align: right"]105[/TD]
[/TR]
[TR]
[TD="align: right"]30.10.2012[/TD]
[TD="align: right"]273[/TD]
[TD="align: right"]204[/TD]
[TD="align: right"]133[/TD]
[/TR]
[TR]
[TD="align: right"]04.11.2012[/TD]
[TD="align: right"]307[/TD]
[TD="align: right"]228[/TD]
[TD="align: right"]173[/TD]
[/TR]
[TR]
[TD="align: right"]11.11.2012[/TD]
[TD="align: right"]342[/TD]
[TD="align: right"]249[/TD]
[TD="align: right"]233[/TD]
[/TR]
[TR]
[TD="align: right"]20.11.2012[/TD]
[TD="align: right"]415[/TD]
[TD="align: right"]304[/TD]
[TD="align: right"]303[/TD]
[/TR]
[TR]
[TD="align: right"]30.11.2012[/TD]
[TD="align: right"]461[/TD]
[TD="align: right"]333[/TD]
[TD="align: right"]390[/TD]
[/TR]
[TR]
[TD="align: right"]02.12.2012[/TD]
[TD="align: right"]466[/TD]
[TD="align: right"]336[/TD]
[TD="align: right"]404[/TD]
[/TR]
[TR]
[TD="align: right"]09.12.2012[/TD]
[TD="align: right"]500[/TD]
[TD="align: right"]356[/TD]
[TD="align: right"]468[/TD]
[/TR]
[TR]
[TD="align: right"]11.12.2012[/TD]
[TD="align: right"]510[/TD]
[TD="align: right"]362[/TD]
[TD="align: right"]487[/TD]
[/TR]
[TR]
[TD="align: right"]23.12.2012[/TD]
[TD="align: right"]526[/TD]
[TD="align: right"]368[/TD]
[TD="align: right"]610[/TD]
[/TR]
[/TABLE]

Tabelle 2 - Monatsauswertung:
[TABLE="class: grid, width: 320"]
[TR]
[TD="width: 80, align: right"]Okt. 12[/TD]
[TD="width: 80, align: right"]273[/TD]
[TD="width: 80, align: right"]204[/TD]
[TD="width: 80, align: right"]133[/TD]
[/TR]
[TR]
[TD="align: right"]Nov. 12[/TD]
[TD="align: right"]461[/TD]
[TD="align: right"]333[/TD]
[TD="align: right"]390[/TD]
[/TR]
[TR]
[TD="align: right"]Dez. 12[/TD]
[TD="align: right"]526[/TD]
[TD="align: right"]368[/TD]
[TD="align: right"]610[/TD]
[/TR]
[/TABLE]

Wer hat eine Idee?
 
(ich bin zu faul es zu probieren atm, aber hier ein Gedanke...)
Nimm doch die Zahlen 4-5 (wenn als Textfeld kodiert) und die Zahlen 7-10 und mach damit ein for in VBA... so hätte ich das jedenfalls versucht, wenn keine Option von Excel zur Verfügung stünde.
Vielleicht hat ja aber auch jemand eine Funktion dafür.
 
Ich versteh auch nicht direkt, wo das Problem ist... weil Formeln können ja in Excel auch über Dateigrenzen hinausgehen...
 
@Merle: Unnötige Aussage. Tabellen können überall sein. In der selben Datei oder in einer anderen.
 
SQL und VBA sind nicht unbedingt meine Stärke und ich kenne auch nicht alle Funktionen von Excel im Detail. Deswegen die Frage in einem Computerforum. ;)
Snooty, vielen Dank. So ähnlich ich es mir vorgestellt.

edit: ----------
Läßt sich leider nicht auf meine Tabelle umsetzen.
 
Zuletzt bearbeitet:
Code:
Option Explicit
Sub Schaltfläche1_Klicken()
Dim i1, i2 As Integer
Dim rowz As Integer

rowz = ActiveSheet.Range("A65536").End(xlUp).Row
i1 = 1
i2 = 1

'So lange, bis die Zählvariable i1 die gesamten Reihen durch hat, die belegt sind.
Do Until (i1 > rowz)
If (Left(ActiveSheet.Range("A" & i1).Value, 2)) >= (Left(ActiveSheet.Range("A" & (i1 + 1)).Value, 2)) Then
ActiveSheet.Range("F" & i2).Value = ActiveSheet.Range("A" & i1).Value
ActiveSheet.Range("G" & i2).Value = ActiveSheet.Range("B" & i1).Value
ActiveSheet.Range("H" & i2).Value = ActiveSheet.Range("C" & i1).Value
ActiveSheet.Range("I" & i2).Value = ActiveSheet.Range("D" & i1).Value
i2 = i2 + 1

'Workaround, da die letzte Zeile + 1 sonst leer wäre und kein Ergebnis dabei raus kommt...
ElseIf ActiveSheet.Range("A" & (i1 + 1)).Value = Null Then
ActiveSheet.Range("F" & i2).Value = ActiveSheet.Range("A" & i1).Value
ActiveSheet.Range("G" & i2).Value = ActiveSheet.Range("B" & i1).Value
ActiveSheet.Range("H" & i2).Value = ActiveSheet.Range("C" & i1).Value
ActiveSheet.Range("I" & i2).Value = ActiveSheet.Range("D" & i1).Value

i2 = i2 + 1
End If
i1 = i1 + 1
Loop
End Sub

Hier mal ein Code.
Der hat aber ein Problem: Wenn du in 2 Monaten keine Einträge hast, bzw im ersten Monat 21. der höchste "Tag" ist, und im nächsten Monat dann sofort der Tag 22 folgt, wird dieser Code das nicht abfangen... Das ist aber auch trivial und amateurhaft. Vielleicht kann da ja jemand noch was reinschmeissen...
@Snooty: ich hab mal deine Vorlage "mißbraucht"...


*edit1:
Der vergleicht nur noch die Monate. Nacheinander. Also MUSS es in der Reihe sein... Aber ansonsten gehts.
Code:
Option Explicit
Sub Schaltfläche1_Klicken()
Dim i1, i2 As Integer
Dim rowz As Integer

rowz = ActiveSheet.Range("A65536").End(xlUp).Row
i1 = 1
i2 = 1

'So lange, bis die Zählvariable i1 die gesamten Reihen durch hat, die belegt sind.
Do Until (i1 > rowz)
If ((Right(Left(ActiveSheet.Range("A" & i1).Value, 5), 2) < Right(Left(ActiveSheet.Range("A" & i1 + 1).Value, 5), 2))) Or (Right(ActiveSheet.Range("A" & i1).Value, 4) < Right(ActiveSheet.Range("A" & i1 + 1).Value, 4)) Then
ActiveSheet.Range("F" & i2).Value = ActiveSheet.Range("A" & i1).Value
ActiveSheet.Range("G" & i2).Value = ActiveSheet.Range("B" & i1).Value
ActiveSheet.Range("H" & i2).Value = ActiveSheet.Range("C" & i1).Value
ActiveSheet.Range("I" & i2).Value = ActiveSheet.Range("D" & i1).Value
i2 = i2 + 1

'Workaround, da die letzte Zeile + 1 sonst leer wäre und kein Ergebnis dabei raus kommt...
ElseIf ActiveSheet.Range("A" & (i1 + 1)).Value = Empty Then
ActiveSheet.Range("F" & i2).Value = ActiveSheet.Range("A" & i1).Value
ActiveSheet.Range("G" & i2).Value = ActiveSheet.Range("B" & i1).Value
ActiveSheet.Range("H" & i2).Value = ActiveSheet.Range("C" & i1).Value
ActiveSheet.Range("I" & i2).Value = ActiveSheet.Range("D" & i1).Value

i2 = i2 + 1
End If
i1 = i1 + 1
Loop
End Sub
 

Anhänge

Zuletzt bearbeitet:
So, ich habe nun beide Varianten umsetzen können. Vielen Dank.
 
Zurück
Oben