Microsoft Excel

Herbers Excel/VBA-Archiv

Addition bei versch. Reihenfolge & Anzahl


Betrifft: Addition bei versch. Reihenfolge & Anzahl von: Laura M.
Geschrieben am: 19.09.2017 12:38:09

Hallo liebe Community,

ich brauche eure Hilfe bei einem Makro, da ich mich leider nicht wirklich mit VBA Schleifen auskenne.
Eigentlich geht es um simple Addition, die nur dadurch kompliziert wird, dass sich Reihenfolge und Anzahl der Werte ändern.
Schwierig zu erklären, ich hoffe mit dem angehängten Beispiel wird es klar.

https://www.herber.de/bbs/user/116362.xlsx

Ich möchte die einzelnen Gewichte addieren bis "neu" und in eine Zusammenfassung schreiben lassen.

Nach dem Motto:

Zähle bis in Spalte F "neu"
dann addiere E (summe)
bis in F wieder "neu"

Schreibe neu 1 und summe in Bereich XX

....

Hoffe es ist verständlich und ihr könnt mir vielleicht helfen.
Vielen Dank vorab!
SG

  

Betrifft: AW: Addition bei versch. Reihenfolge & Anzahl von: Sepp
Geschrieben am: 19.09.2017 15:13:24

Hallo Laura,

warum VBA?

Beleg

 ABCDEFGHIJKLMN
1              
2              
3UhrzeitAnzahlGrößeGewichtGesamtgewichtSumme  Zusammenfassung     
4          Gesamtgewicht   
5 18451414,8425467,12   Alt 46159,89 4 
6 7652956,1120692,7746159,89  neu 1 47827,59 7 
720:04:44neu      neu 2 61671,165 10 
8 9652956,1126604,99   neu 3 66140,09 12 
9 15451414,8421222,647827,59  neu 4 79865,768 14 
1021:04:17neu      neu 5 36224,25 19 
11 6935893,78561671,16561671,165  neu 6 7796,55 22 
1222:31:18neu      neu 7 36237,82 24 
13 7435893,78566140,0966140,09      27 
1422:31:18neu          27 
15 5536827,70645523,83       27 
16 8451414,8411318,72       27 
17 1960760,46214448,778         
18 2025428,7228574,4479865,768    381923,123   
1922:40:22neu            
20 15552009,5430143,1         
21 1526405,416081,1536224,25        
2223:01:07neu      Kontrolle!     
23 2520311,8627796,557796,55        
2423:15:09neu            
25 3020311,8629355,86         
26 19451414,8426881,9636237,82        
27              
28    381923,123381923,123        
29              

Formeln der Tabelle
ZelleFormel
F5=WENN(ISTZAHL(VERGLEICH(ZEILE()+1;$M$6:$M$16;0)); SUMME(INDEX(E:E;KKLEINSTE($M$5:$M$16;ANZAHL($F$4:F4)+1)):INDEX(E:E;KKLEINSTE($M$5:$M$16;ANZAHL($F$4:F4)+2))); "")
K5=SUMME(E4:INDEX(E:E;M6-1))
F6=WENN(ISTZAHL(VERGLEICH(ZEILE()+1;$M$6:$M$16;0)); SUMME(INDEX(E:E;KKLEINSTE($M$5:$M$16;ANZAHL($F$4:F5)+1)):INDEX(E:E;KKLEINSTE($M$5:$M$16;ANZAHL($F$4:F5)+2))); "")
I6=WENN(M6=VERGLEICH(0;B:B;-1)+1;"";INDEX(B:B;M6)&" "&ZEILE(A1))
K6=WENN(M6=VERGLEICH(0;B:B;-1)+1;"";SUMME(INDEX(E:E;M6):INDEX(E:E;MIN(M7-1;999))))
M6=WENNFEHLER(AGGREGAT(15;6;ZEILE($A$4:$A$999)/(ISTTEXT($B$4:$B$999)); ZEILE(A1)); VERGLEICH(0;B:B;-1)+1)


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8

Spalte M kann ausgeblendet werden.

https://www.herber.de/bbs/user/116365.xlsx

Gruß Sepp



  

Betrifft: AW: Addition bei versch. Reihenfolge & Anzahl von: Laura M.
Geschrieben am: 19.09.2017 15:41:52

Hallo Sepp,

Wow, hätte nicht gedacht, dass das mit Formeln umsetzbar ist. Funktioniert wie angefragt, vielen Dank also auf jedenfall schon einmal dafür!

Für mich wäre es noch schöner, wenn das ganze nur auf Knopfdruck erscheint und nicht permanent vorhanden ist, deshalb dachte ich an ein VBA.

Vielleicht kennst du/jemand anders eine Lösung mit VBA?

SG


  

Betrifft: AW: Addition bei versch. Reihenfolge & Anzahl von: Sepp
Geschrieben am: 19.09.2017 16:08:08

Hallo Laura,

auch kein Problem.

' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub laura()
Dim varOut1 As Variant, varOut2 As Variant
Dim lngIndex As Long, lngLast As Long, lngStart As Long, lngN As Long

With Sheets("Beleg")
  lngLast = Application.Max(4, .Cells(.Rows.Count, 2).End(xlUp).Row) + 1
  Redim varOut1(1 To lngLast, 1 To 1)
  Redim varOut2(1 To Application.CountIf(.Range("B4:B" & lngLast), "neu") + 1, 1 To 3)
  lngStart = 4
  For lngIndex = 4 To lngLast
    If .Cells(lngIndex, 2) = "neu" Or lngIndex = lngLast Then
      varOut1(lngIndex - 4, 1) = Application.Sum(.Range(.Cells(lngStart, 5), .Cells(lngIndex - 1, 5)))
      lngStart = lngIndex
      lngN = lngN + 1
      varOut2(lngN, 1) = IIf(lngN = 1, "alt", "neu " & lngN - 1)
      varOut2(lngN, 3) = varOut1(lngIndex - 4, 1)
    End If
  Next
  .Range("F4:F" & lngIndex) = varOut1
  .Range("I5").Resize(UBound(varOut2, 1), 3) = varOut2
End With
End Sub


Gruß Sepp



  

Betrifft: Kleiner Fehler in Code! von: Sepp
Geschrieben am: 19.09.2017 16:33:40

Hallo Laura,

nimm diesen hier:

' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub laura()
Dim varOut1 As Variant, varOut2 As Variant
Dim lngIndex As Long, lngLast As Long, lngStart As Long, lngN As Long

With Sheets("Beleg")
  lngLast = Application.Max(4, .Cells(.Rows.Count, 2).End(xlUp).Row) + 1
  Redim varOut1(1 To lngLast, 1 To 1)
  Redim varOut2(1 To Application.CountIf(.Range("B4:B" & lngLast), "neu") + 1, 1 To 3)
  lngStart = 4
  For lngIndex = 4 To lngLast
    If .Cells(lngIndex, 2) = "neu" Or lngIndex = lngLast Then
      varOut1(lngIndex - 4, 1) = Application.Sum(.Range(.Cells(lngStart, 5), .Cells(lngIndex - 1, 5)))
      lngStart = lngIndex
      lngN = lngN + 1
      varOut2(lngN, 1) = IIf(lngN = 1, "alt", "neu " & lngN - 1)
      varOut2(lngN, 3) = varOut1(lngIndex - 4, 1)
    End If
  Next
  .Range("F4").Resize(UBound(varOut1, 1), 1) = varOut1
  .Range("I5").Resize(UBound(varOut2, 1), 3) = varOut2
End With
End Sub


Gruß Sepp



  

Betrifft: AW: Kleiner Fehler in Code! von: Laura M.
Geschrieben am: 20.09.2017 08:30:41

Das funktioniert tadellos ! Ich danke dir vielmals für die tolle Hilfe !!! :)


Beiträge aus den Excel-Beispielen zum Thema "Addition bei versch. Reihenfolge & Anzahl"