VBA - Summe berechnen
In Spalte A Datum...in Spalte E Zahlen (Gewichte)
Solange in Spalte A gleiches Datum soll Spalte E summiert werden
Hello,
also wie schon kurz beschrieben habe ich im Sheet1 in Spalte A Daten in Form von zB: 1.6.10, 1.6.10, 1.6.10, 2.6.10, 2.6.10, etc.
stehen (natürlich untereinander und in Spalte E stehen in den gleichen Zeilen Gewichtswerte
Nun möchte ich alle Gewichte vom 1.6.10 zusammenzählen,
bei mir wär dass von E2 (weil ein 1. Zeile stehen Beschreibungen)
bis E15
Das Ergebnis sozusagen soll dann in Sheet2 eingetragen werden
und zwar wie folgt:
1.6.10 Summe Gewichter vom 1.6.10
Mein erster Einfall war mir Datum und Gewicht von Sheet1 zu holen
und mit einer Schleife immer das Datum zu prüfen und das Gewicht dann
zu addieren und das Endergebnis in Sheet2 eintragen
-> Hier hatte ich dass Problem, was mach ich wenn das Datum sich ändert
ih hatte hier eine ganze Menge Prüfungen und dann den Überblick verloren
Meine zweite Idee war mir das Datum aus Sheet1 zu holen
und mir zu merken in welcher Zeile das erste Datum steht ( zB: Zeile 2 )
und dann nach unten zu zählen so lange das Datum ident ist ( zb: Zeile 15 )
Die zwei Werte ( 2 und 15 ) speichern und dann hergehen und
sagen dass das Datum in Sheet2 in zB: A2 eingetragen wird
und dann daneben die Summe von Sheet1 E2:E15
Ideen hätte ich ja aber leider bin ich in VBA nicht so sattelfest....
vielleicht könnt ihr mir ja helfen.
Zur Zeit habe ich bei "Idee2" folgenden Code generiert:
Private Sub DatenSammlen_Walter_taegl()
Dim TempGewicht As Long
Dim SummeGewicht As Long
Dim TempDatum As Date
Dim PruefDatum As Date
Dim ZaehlerBeginn As Long
Dim ZaehlerEnde As Long
Worksheets("LKW-Walter_Daten").Activate
ZaehlerEnde = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
Dim ZaehlerSummeBeginn As Long
ZaehlerSummeBeginn = 2
Dim ZaehlerSummeEnde As Long
For ZaehlerBeginn = 2 To ZaehlerEnde
PruefDatum = Worksheets("LKW-Walter_Daten").Range("A" + Trim(Str(ZaehlerBeginn)))
Next ZaehlerBeginn
End Sub
Bis dato hab ich ja mal das Datum mit dem ich Pruefend in Sheet1 nach unten laufen will
Ich steh nur grad voll auf der Leitung.....vielleicht ist es auch schon ein bisserl spät....
vielleicht habt ihr ja ein paar Inputs für mich!!
lg
ava
Solange in Spalte A gleiches Datum soll Spalte E summiert werden
Hello,
also wie schon kurz beschrieben habe ich im Sheet1 in Spalte A Daten in Form von zB: 1.6.10, 1.6.10, 1.6.10, 2.6.10, 2.6.10, etc.
stehen (natürlich untereinander und in Spalte E stehen in den gleichen Zeilen Gewichtswerte
Nun möchte ich alle Gewichte vom 1.6.10 zusammenzählen,
bei mir wär dass von E2 (weil ein 1. Zeile stehen Beschreibungen)
bis E15
Das Ergebnis sozusagen soll dann in Sheet2 eingetragen werden
und zwar wie folgt:
1.6.10 Summe Gewichter vom 1.6.10
Mein erster Einfall war mir Datum und Gewicht von Sheet1 zu holen
und mit einer Schleife immer das Datum zu prüfen und das Gewicht dann
zu addieren und das Endergebnis in Sheet2 eintragen
-> Hier hatte ich dass Problem, was mach ich wenn das Datum sich ändert
ih hatte hier eine ganze Menge Prüfungen und dann den Überblick verloren
Meine zweite Idee war mir das Datum aus Sheet1 zu holen
und mir zu merken in welcher Zeile das erste Datum steht ( zB: Zeile 2 )
und dann nach unten zu zählen so lange das Datum ident ist ( zb: Zeile 15 )
Die zwei Werte ( 2 und 15 ) speichern und dann hergehen und
sagen dass das Datum in Sheet2 in zB: A2 eingetragen wird
und dann daneben die Summe von Sheet1 E2:E15
Ideen hätte ich ja aber leider bin ich in VBA nicht so sattelfest....
vielleicht könnt ihr mir ja helfen.
Zur Zeit habe ich bei "Idee2" folgenden Code generiert:
Private Sub DatenSammlen_Walter_taegl()
Dim TempGewicht As Long
Dim SummeGewicht As Long
Dim TempDatum As Date
Dim PruefDatum As Date
Dim ZaehlerBeginn As Long
Dim ZaehlerEnde As Long
Worksheets("LKW-Walter_Daten").Activate
ZaehlerEnde = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
Dim ZaehlerSummeBeginn As Long
ZaehlerSummeBeginn = 2
Dim ZaehlerSummeEnde As Long
For ZaehlerBeginn = 2 To ZaehlerEnde
PruefDatum = Worksheets("LKW-Walter_Daten").Range("A" + Trim(Str(ZaehlerBeginn)))
Next ZaehlerBeginn
End Sub
Bis dato hab ich ja mal das Datum mit dem ich Pruefend in Sheet1 nach unten laufen will
Ich steh nur grad voll auf der Leitung.....vielleicht ist es auch schon ein bisserl spät....
vielleicht habt ihr ja ein paar Inputs für mich!!
lg
ava
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 145712
Url: https://administrator.de/contentid/145712
Ausgedruckt am: 22.11.2024 um 21:11 Uhr
6 Kommentare
Neuester Kommentar
Hallo Avalon1!
Wenn Du keine Pivot-Tabelle verwenden willst, dann etwa so (für "Idee1"):
Voraussetzung ist natürlich, dass nach der Spalte A sortiert wurde ...
[Edit] Fehlenden "
Die zweite Variante (ist aber auch nur bedingt dynamisch - etwa, wenn nachträglich in der Quelltabelle noch eine Zeile an der richtigen Stelle eingefügt würde) sollte so zu machen sein:
Grüße
bastla
Wenn Du keine Pivot-Tabelle verwenden willst, dann etwa so (für "Idee1"):
Private Sub DatenSammlen_Walter_taegl()
Worksheets("LKW-Walter_Daten").Activate
ZaehlerBeginn = 2
ZaehlerEnde = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
ZielTabelle = "Tabelle2"
ZielZeile = 2
For QuellZeile = ZaehlerBeginn To ZaehlerEnde + 1 '+1, um auch die letzte Summe noch zu schreiben
If Cells(QuellZeile, "A") <> Datum Then 'neue Gruppe
If QuellZeile > ZaehlerBeginn Then 'Eintragen
With Worksheets(ZielTabelle)
.Cells(ZielZeile, "A") = Datum
.Cells(ZielZeile, "B") = Summe
ZielZeile = ZielZeile + 1
End With
End If
Datum = Cells(QuellZeile, "A")
Summe = Cells(QuellZeile, "E")
Else
Summe = Summe + Cells(QuellZeile, "E")
End If
Next
End Sub
[Edit] Fehlenden "
Else
"-Zweig nachgereicht [/Edit]Die zweite Variante (ist aber auch nur bedingt dynamisch - etwa, wenn nachträglich in der Quelltabelle noch eine Zeile an der richtigen Stelle eingefügt würde) sollte so zu machen sein:
Private Sub DatenSammlen_Walter_taegl()
Worksheets("LKW-Walter_Daten").Activate
ZaehlerBeginn = 2
ZaehlerEnde = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
ZielTabelle = "Tabelle3"
ZielZeile = 2
VonZeile = QuellZeile
For QuellZeile = ZaehlerBeginn To ZaehlerEnde + 1
If Cells(QuellZeile, "A") <> Datum Then
If QuellZeile > ZaehlerBeginn Then 'Eintragen
With Worksheets(ZielTabelle)
.Cells(ZielZeile, "A") = Datum
.Cells(ZielZeile, "B").Formula = "=SUM(" & ActiveSheet.Name & "!E" & VonZeile & ":E" & QuellZeile - 1 & ")"
ZielZeile = ZielZeile + 1
End With
End If
Datum = Cells(QuellZeile, "A")
VonZeile = QuellZeile
End If
Next
End Sub
bastla
Hallo Avalon1 und bastla!
So könnte Variante 2 (ähnlich bastlas Variante 2) auch funktionieren. Ist aber aus Zeitgründen nur oberflächlich getestet
Gruß Dieter
[edit] Auf bastlas Anregung Daten-Summen-Spalte nach "E" geändert [/edit]
So könnte Variante 2 (ähnlich bastlas Variante 2) auch funktionieren. Ist aber aus Zeitgründen nur oberflächlich getestet
Option Explicit
Const SheetDaten = "LKW-Walter_Daten"
Const SheetSummen = "Gewichts-Summen"
Const DatenStartZeile = 2
Const SummenStartZeile = 2
Private Sub DatenSammlen_Walter_taegl()
Dim Datum As Date, DatenZeile As Long, MerkZeile As Long, SummenZeile As Long
Worksheets(SheetDaten).Activate
Datum = Cells(DatenStartZeile, "A")
MerkZeile = DatenStartZeile
SummenZeile = SummenStartZeile
For DatenZeile = DatenStartZeile To Cells(Rows.Count, "A").End(xlUp).Row + 1
If Cells(DatenZeile, "A") <> Datum Then
With Worksheets(SheetSummen)
.Cells(SummenZeile, "A") = Datum
.Cells(SummenZeile, "B") = WorksheetFunction.Sum(Range(Cells(MerkZeile, "E"), Cells(DatenZeile - 1, "E")))
Datum = Cells(DatenZeile, "A")
MerkZeile = DatenZeile
SummenZeile = SummenZeile + 1
End With
End If
Next
End Sub
Gruß Dieter
[edit] Auf bastlas Anregung Daten-Summen-Spalte nach "E" geändert [/edit]
@Dieter
Eigentlich ist Dein Vorschlag eine Mischung aus Variante 1 und 2, da zwar die Summenberechnung über "
Die letzten beiden "B" der Zeile 22 sollten übrigens lt Angabe jeweils "E" sein ...
Grüße
bastla
Eigentlich ist Dein Vorschlag eine Mischung aus Variante 1 und 2, da zwar die Summenberechnung über "
SUMME
" erfolgt, in die Zielzelle aber nur das Ergebnis eingetragen wird ...Die letzten beiden "B" der Zeile 22 sollten übrigens lt Angabe jeweils "E" sein ...
Grüße
bastla
Hallo bastla!
Ups, bin wohl etwas aus der Übung
Habe im Moment noch viel mit Wohnung einrichten zu tun (derzeit Küche einbauen) und dachte mach mal ne Pause und spiel ein bischen.
Ob jetzt die Von- und Bis-Zellen ermittelt werden und dann die Formel oder die Summe in die Zielzelle geschrieben wird, kommt doch irgendwie auf's gleiche raus?
Es sei denn, die Werte werden nachräglich verändert, dann wäre es natürlich sinnvoller die Formel reinzuschreiben?
Gruß Dieter
Ups, bin wohl etwas aus der Übung
Habe im Moment noch viel mit Wohnung einrichten zu tun (derzeit Küche einbauen) und dachte mach mal ne Pause und spiel ein bischen.
Ob jetzt die Von- und Bis-Zellen ermittelt werden und dann die Formel oder die Summe in die Zielzelle geschrieben wird, kommt doch irgendwie auf's gleiche raus?
Es sei denn, die Werte werden nachräglich verändert, dann wäre es natürlich sinnvoller die Formel reinzuschreiben?
Gruß Dieter
Hallo Dieter!
Grüße
bastla
P.S.: Weiterhin viel Spaß beim Einrichten (auch wenn's manchmal eher "viel" als "Spaß" sein kann ) ...
Ob jetzt die Von- und Bis-Zellen ermittelt werden und dann die Formel oder die Summe in die Zielzelle geschrieben wird, kommt doch irgendwie auf's gleiche raus?
Es sei denn, die Werte werden nachräglich verändert, dann wäre es natürlich sinnvoller die Formel reinzuschreiben?
Sehe ich auch so - und hinsichtlich der Formel habe ich ja oben schon die eingeschränkte Dynamik angemerkt (wobei sich auch nicht wirklich viel ändern würde, wenn anstelle von "Es sei denn, die Werte werden nachräglich verändert, dann wäre es natürlich sinnvoller die Formel reinzuschreiben?
SUMME
" ein "ZÄHLENWENN
" verwendet würde - es käme auch dann noch immer darauf an, dass alle Datumswerte in der zweiten Tabelle genau einmal aufscheinen) ...Grüße
bastla
P.S.: Weiterhin viel Spaß beim Einrichten (auch wenn's manchmal eher "viel" als "Spaß" sein kann ) ...