Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1364to1368
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Zwischensummen einfügen per VBA
18.06.2014 17:13:24
Christian
Hallo Forum,
folgende Nuss will ich knacken...
Gegeben sind folgende variablen Ausgangslagen:
 ABCDEFG
28LOS01xxx                           
29TI01.01xxx                           
30POS01.01.01xxx33,000186,46 €6.153,18 €
31EPOS01.01.02xxx44,0005,81 €255,64 €
32HP01.01.03xxx1,000psch.2.357,74 €2.357,74 €
33HPEPOS01.01.04xxx1,000psch.1.546,71 €1.546,71 €
34POS01.01.05xxx245,00048,93 €11.987,85 €
35POS01.01.06xxx56,00031,30 €1.752,80 €
36POS01.01.07xxx44,00039,02 €1.716,88 €
37TI01.02xxx                           
38POS01.02.01xxx233,00015,77 €3.674,41 €
39POS01.02.02xxx34,00010,56 €359,04 €
40POS01.02.03xxx5,000Stk8,71 €43,55 €
41LOS02xxx                           
42TI02.01xxx                           
43POS02.01.01xxx44,000m41,93 €1.844,92 €
44POS02.01.02xxx56,000m4,98 €278,88 €
45POS02.01.03xxx66,000m8,71 €574,86 €
46TI02.02xxx                           
47POS02.02.01xxx23,00016,66 €383,18 €
48POS02.02.02xxx5,000Stk74,37 €371,85 €


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8
Die Anzahl der LOS und TI in Spalte 1 kann varieren, es kann auch sein das LOS nicht vorhanden ist:
 ABCDEFG
28TI01xxx                           
29POS01.01xxx33,000186,46 €6.153,18 €
30EPOS01.02xxx44,0005,81 €255,64 €
31HP01.03xxx1,000psch.2.357,74 €2.357,74 €
32HPEPOS01.04xxx1,000psch.1.546,71 €1.546,71 €
33POS01.05xxx245,00048,93 €11.987,85 €
34POS01.06xxx56,00031,30 €1.752,80 €
35POS01.07xxx44,00039,02 €1.716,88 €
36TI02xxx                           
37POS02.01xxx233,00015,77 €3.674,41 €
38POS02.02xxx34,00010,56 €359,04 €
39POS02.03xxx5,000Stk8,71 €43,55 €
40TI03xxx                           
41POS03.01xxx44,000m41,93 €1.844,92 €
42POS03.02xxx56,000m4,98 €278,88 €
43POS03.03xxx66,000m8,71 €574,86 €
44TI04xxx                           
45POS04.01xxx23,00016,66 €383,18 €
46POS04.02xxx5,000Stk74,37 €371,85 €


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8
Als Ergebnis hätte ich gerne:
 ABCDEFG
28LOS01xxx                           
29TI01.01xxx                           
30POS01.01.01xxx33,000186,46 €6.153,18 €
31EPOS01.01.02xxx44,0005,81 €255,64 €
32HP01.01.03xxx1,000psch.2.357,74 €2.357,74 €
33HPEPOS01.01.04xxx1,000psch.1.546,71 €1.546,71 €
34POS01.01.05xxx245,00048,93 €11.987,85 €
35POS01.01.06xxx56,00031,30 €1.752,80 €
36POS01.01.07xxx44,00039,02 €1.716,88 €
37  Summe Titel 01.01 xxx   25.770,80 €
38TI01.02xxx                           
39POS01.02.01xxx233,00015,77 €3.674,41 €
40POS01.02.02xxx34,00010,56 €359,04 €
41POS01.02.03xxx5,000Stk8,71 €43,55 €
42  Summe Titel 01.02 xxx   4.077,00 €
43  Summe Los 01 xxx   29.847,80 €
44LOS02xxx                           
45TI02.01xxx                           
46POS02.01.01xxx44,000m41,93 €1.844,92 €
47POS02.01.02xxx56,000m4,98 €278,88 €
48POS02.01.03xxx66,000m8,71 €574,86 €
49  Summe Titel 02.01 xxx   2.698,66 €
50TI02.02xxx                           
51POS02.02.01xxx23,00016,66 €383,18 €
52POS02.02.02xxx5,000Stk74,37 €371,85 €
53  Summe Titel 02.02 xxx   755,03 €
54  Summe Los 02 xxx   3.453,69 €
55  Gesamtsumme   33.301,49 €


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8
bzw. wenn kein LOS vorhanden dann:
 ABCDEFG
28TI01xxx                           
29POS01.01xxx33,000186,46 €6.153,18 €
30EPOS01.02xxx44,0005,81 €255,64 €
31HP01.03xxx1,000psch.2.357,74 €2.357,74 €
32HPEPOS01.04xxx1,000psch.1.546,71 €1.546,71 €
33POS01.05xxx245,00048,93 €11.987,85 €
34POS01.06xxx56,00031,30 €1.752,80 €
35POS01.07xxx44,00039,02 €1.716,88 €
36  Summe Titel 01   25.770,80 €
37TI02xxx                           
38POS02.01xxx233,00015,77 €3.674,41 €
39POS02.02xxx34,00010,56 €359,04 €
40POS02.03xxx5,000Stk8,71 €43,55 €
41  Summe Titel 02   4.077,00 €
42TI03xxx                           
43POS03.01xxx44,000m41,93 €1.844,92 €
44POS03.02xxx56,000m4,98 €278,88 €
45POS03.03xxx66,000m8,71 €574,86 €
46  Summe Titel 03   2.698,66 €
47TI04xxx                           
48POS04.01xxx23,00016,66 €383,18 €
49POS04.02xxx5,000Stk74,37 €371,85 €
50  Summe Titel 04   755,03 €
51  Gesamtsumme   33.301,49 €


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8
Wie muss der Code dazu lauten, um dass umzusetzen?
Noch zur Ergänzung: Bis jetzt ist dieses Array noch nicht unbedingt im Tabellenblatt, sondern nur in der Listbox, daher die Frage, ob man das erst in die Tabelle schreiben sollte und dann zurück in die LB, oder ob es möglich ist, das ganze nur in der LB zu realisieren.
Da dass ganze ja variabel ist, also die Anzahl der LOS und TI nie eindeutig vorgegeben sind, und auch die Anzahl der zugehörigen POS, EPOS, HP, HPEPOS varieren kann, beiss ich mir die Zähne daran aus, den Summenbereich automatisch flexibel zu bilden.
Für Anstupser in die richtige Richtung oder auch Fundstellen im Archiv(habe da leider noch nichts gefunden) bedanke ich mich im Voraus
MfG Christian

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Zwischensummen einfügen per VBA... erster Ansatz
18.06.2014 22:17:40
Christian
Hallo Forum,
ein klein bisschen bin ich schon weiter gekommen, nur die zuordnungen stimmen noch nicht ganz.
Sub ZwischensummeTI() Dim zeilesuchti As Long, zeileti As Long, zeilesuchlos As Long, zeilelos As Long, zeileanz As _ Long, suchende As Long suchende = Cells(Rows.Count, 1).End(xlUp).Row + 2 For zeileanz = 28 To suchende If Cells(zeileanz, 1).Value = "LOS" Then anzlos = anzlos + 1 End If If Cells(zeileanz, 1).Value = "TI" Then anzti = anzti + 1 End If Next zeileanz If anzti > 0 Then For zeilesuchti = suchende To 28 Step -1 If Cells(zeilesuchti, 1).Value = "TI" And WorksheetFunction.CountIf(Range(Cells( _ zeilesuchti, 1), Cells(suchende, 1)), "TI") 0 Then For zeilesuchlos = suchende To 28 Step -1 If Cells(zeilesuchlos, 1).Value = "LOS" And WorksheetFunction.CountIf(Range(Cells( _ zeilesuchlos, 1), Cells(suchende, 1)), "LOS") Ergebnis:
 ABCDEFG
28LOS01xxx                           
29TI01.01xxx                           
30POS01.01.01xxx33,000186,46 €6.153,18 €
31EPOS01.01.02xxx44,0005,81 €255,64 €
32HP01.01.03xxx1,000psch.2.357,74 €2.357,74 €
33HPEPOS01.01.04xxx1,000psch.1.546,71 €1.546,71 €
34POS01.01.05xxx245,00048,93 €11.987,85 €
35POS01.01.06xxx56,00031,30 €1.752,80 €
36POS01.01.07xxx44,00039,02 €1.716,88 €
37  Summe Titel 01.01 xxx   25.770,80 €
38TI01.02xxx                           
39POS01.02.01xxx233,00015,77 €3.674,41 €
40POS01.02.02xxx34,00010,56 €359,04 €
41POS01.02.03xxx5,000Stk8,71 €43,55 €
42  Summe LOS 01 xxx   29.847,80 €
43LOS02xxx                           
44  Summe Titel 01.02 xxx   4.077,00 €
45TI02.01xxx                           
46POS02.01.01xxx44,000m41,93 €1.844,92 €
47POS02.01.02xxx56,000m4,98 €278,88 €
48POS02.01.03xxx66,000m8,71 €574,86 €
49  Summe Titel 02.01 xxx   2.698,66 €
50TI02.02xxx                           
51POS02.02.01xxx23,00016,66 €383,18 €
52POS02.02.02xxx5,000Stk74,37 €371,85 €
53       
54       


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8
Soll Ergebnis:
 ABCDEFG
28LOS01xxx                           
29TI01.01xxx                           
30POS01.01.01xxx33,000186,46 €6.153,18 €
31EPOS01.01.02xxx44,0005,81 €255,64 €
32HP01.01.03xxx1,000psch.2.357,74 €2.357,74 €
33HPEPOS01.01.04xxx1,000psch.1.546,71 €1.546,71 €
34POS01.01.05xxx245,00048,93 €11.987,85 €
35POS01.01.06xxx56,00031,30 €1.752,80 €
36POS01.01.07xxx44,00039,02 €1.716,88 €
37  Summe Titel 01.01 xxx   25.770,80 €
38TI01.02xxx                           
39POS01.02.01xxx233,00015,77 €3.674,41 €
40POS01.02.02xxx34,00010,56 €359,04 €
41POS01.02.03xxx5,000Stk8,71 €43,55 €
42  Summe Titel 01.02 xxx   4.077,00 €
43  Summe LOS 01 xxx   29.847,80 €
44LOS02xxx                           
45TI02.01xxx                           
46POS02.01.01xxx44,000m41,93 €1.844,92 €
47POS02.01.02xxx56,000m4,98 €278,88 €
48POS02.01.03xxx66,000m8,71 €574,86 €
49  Summe Titel 02.01 xxx   2.698,66 €
50TI02.02xxx                           
51POS02.02.01xxx23,00016,66 €383,18 €
52POS02.02.02xxx5,000Stk74,37 €371,85 €
53  Summe Titel 02.02 xxx   755,03 €
54  Summe LOS 02 xxx   3.453,69 €


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8
Was muss man noch ändern, damit die Zuordnung stimmt, und die letzte Titel- bzw. Lossumme auch mit eingetragen wird?
MfG Christian

Anzeige
Zwischensummen einfügen per VBA...Ergebnis
19.06.2014 02:31:46
Christian
Hallo VBA-Kenner,
folgender Code funktioniert, meine Frage an die Experten ist, ob man dass so lassen kann oder ob es elegantere Lösungen gibt?
Sub ZwischensummeTILO()
Dim zeilesuchti As Long, zeileti As Long, zeilesuchlos As Long, zeilelos As Long, zeileanz As  _
Long, _
suchende As Long, suchendeti As Long, suchendelos As Long
suchende = Cells(Rows.Count, 3).End(xlUp).Row + 1
For zeileanz = 28 To suchende
If Cells(zeileanz, 1).Value = "LOS" Then
anzlos = anzlos + 1
End If
If Cells(zeileanz, 1).Value = "TI" Then
anzti = anzti + 1
End If
Next zeileanz
suchendelos = suchende + anzti
Application.ScreenUpdating = False
If anzti > 0 And anzlos > 0 Then
For zeilesuchti = suchende To 28 Step -1
If Cells(zeilesuchti, 1).Value = "TI" And Cells(zeilesuchti - 1, 1).Value  "LOS" Or _
Cells(zeilesuchti, 1).Value = "" Or Cells(zeilesuchti, 1).Value = "LOS" And Cells( _
zeilesuchti - 1, 1).Value  "" Then
Rows(zeilesuchti).Insert
zeileti = zeilesuchti - 1
Do Until Cells(zeileti, 1).Value = "TI"
zeileti = zeileti - 1
If zeileti = 1 Then Exit Do
Loop
Cells(zeilesuchti, 7).Value = WorksheetFunction.sum(Range(Cells(zeileti, 7), Cells( _
zeilesuchti - 1, 7)))
Cells(zeilesuchti, 3).Value = "Summe Titel " & Cells(zeileti, 2).Value & " " & Cells( _
zeileti, 3).Value
End If
Next zeilesuchti
End If
If anzti > 0 And anzlos = 0 Then
For zeilesuchti = suchende To 28 Step -1
If Cells(zeilesuchti, 1).Value = "TI" And _
WorksheetFunction.CountIf(Range(Cells(zeilesuchti, 1), Cells(suchende, 1)), "TI")  0 Then
For zeilesuchlos = suchendelos To 28 Step -1
If Cells(zeilesuchlos, 1).Value = "LOS" And _
WorksheetFunction.CountIf(Range(Cells(zeilesuchlos, 1), Cells(suchendelos, 1)), "LOS") 
MfG Christian

Anzeige
AW: Zwischensummen einfügen per VBA...Ergebnis
19.06.2014 08:31:48
ChristianM
Hallo Christian,
mein Vorschlag:
Option Explicit
Sub TestIt()
Dim i As Long, lngLR As Long
Dim lngRwLos As Long, lngRwTi As Long
Dim dblSumLos As Double, dblSumTi As Double
With Sheets("Tabelle1")
lngLR = .Cells(.Rows.Count, 1).End(xlUp).Row
lngRwTi = lngLR + 1
lngRwLos = lngLR + 1
For i = lngLR To 1 Step -1
If .Cells(i, 1) = "LOS" Then
.Rows(lngRwLos).Insert
.Cells(lngRwLos, 3) = "Summe Los " & .Cells(i, 2) & " " & .Cells(i, 3)
.Cells(lngRwLos, 7) = dblSumLos
dblSumTi = 0
dblSumLos = 0
lngRwTi = i
lngRwLos = i
ElseIf .Cells(i, 1) = "TI" Then
.Rows(lngRwTi).Insert
.Cells(lngRwTi, 3) = "Summe Titel " & .Cells(i, 2) & " " & .Cells(i, 3)
.Cells(lngRwTi, 7) = dblSumTi
dblSumTi = 0
lngRwTi = i
lngRwLos = lngRwLos + 1
Else
dblSumLos = dblSumLos + .Cells(i, 7).Value
dblSumTi = dblSumTi + .Cells(i, 7).Value
End If
Next
End With
End Sub
Gruß
ChristianM

Anzeige
Zwischensumme per Vba
19.06.2014 11:00:19
Christian
Hallo Christian,
was soll ich sagen? Klappt bestens, und um einiges kürzer, was den Code und somit die Übersicht betrifft! Klasse!
Und dass zum Feiertag ;-)
Danke Dir!
MfG Christian

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige