Microsoft Excel

Herbers Excel/VBA-Archiv

VBA Zeile einfügen und addieren

Betrifft: VBA Zeile einfügen und addieren von: sara
Geschrieben am: 30.10.2014 11:01:52

Hallo zusammen,

habe folgende Tabelle:

Artikelnr -----Preis1-----Preis2
1101-----------1.000 ----- 1.000
1102-----------1.000 ----- 1.000
1113-----------1.000 ------ 1.000
1204----------- 200 ------ 200
1205----------- 200 ------ 200
1301
1302
1401
etc...

Nach jeder Artikel-Gruppe (11,12,13,..) soll eine Zeile eingefügt und die Preise der Artikelgruppe addiert werden. Das Gruppieren und Zeile einfügen klappt, aber wie kann VBA anhand der Artikelgruppe die Preise addieren?

Das ist mein Code:






Sub LeerzeilenEinfügen()
  Dim altNr As String
  Dim anzLZ As Long
  Dim letzteZeile As Long
  Dim neuNr As String
  Dim startZeile As Long
  Dim ws As Worksheet
  Dim zeile As Long
 
  
  startZeile = 6    ' Ab Zeile 6 prüfen
  anzLZ = 1         ' Eine Leerzeile einfügen
  Set ws = ActiveSheet
  altNr = Left$(ws.Cells(startZeile, "B"), 2)   'die ersten zwei Werte prüfen
  zeile = startZeile
  
Do Until IsEmpty(ws.Cells(zeile, "B"))
    neuNr = Left$(ws.Cells(zeile, "B"), 2)      ' die ersten zwei werte prüfen
    If neuNr <> altNr Then
      
' Leerzeilen einfügen
      ws.Rows(zeile).Resize(anzLZ).Insert
      'zeile = zeile + anzLZ
      altNr = neuNr
      
      ' Name "Subtotal" einfügen und Fett
      ws.Cells(zeile, "B") = "Subtotal"
      ws.Cells(zeile, "B").Font.Bold = True
 
    ' Subtotal in Spalte C und D addieren - Hier ist das eigentliche Problem
       ws.Cells(zeile, "C").FormulaLocal = "=SUMME(SUMMEWENN(B5:B12;{""1101"";""1102"";""1113""} _
;C5:C12))"
       ws.Cells(zeile, "c").Font.Bold = True
        
       ws.Cells(zeile, "d").FormulaLocal = "=SUMME(SUMMEWENN(B5:B12;{""1101"";""1102"";""1113""} _
;C5:C12))"
       ws.Cells(zeile, "d").Font.Bold = True
        
    End If
    zeile = zeile + 1
  Loop
End Sub

Bin ich auf dem richtigen Weg oder soll ich den Code umschreiben?
Vielen Dank...

  

Betrifft: AW: VBA Zeile einfügen und addieren von: Hajo_Zi
Geschrieben am: 30.10.2014 11:16:21

mache eine Extra Spalt wo 11;12;13 steht, Daten, Befehlsgruppe Gliederung, Teilergebnis

GrußformelHomepage


  

Betrifft: AW: VBA Zeile einfügen und addieren von: sara
Geschrieben am: 30.10.2014 12:34:24

Danke für die schnelle Rückmeldung. Aber das muss ein Makro sein. Mein Makro prüft ob die ersten ziffern der Artikelnr identisch sind, dann wird eine neue Zeile eingefügt. Kann man nicht an dieser Stelle sagen: und addiere die dazugehörigen Werte aus den Zellen rechts daneben (Spalte C)?
Vielen Dank.


  

Betrifft: AW: VBA Zeile einfügen und addieren von: Hajo_Zi
Geschrieben am: 30.10.2014 12:52:13

ich baue keine Datei nach.

Option Explicit

Sub LeerzeilenEinfügen()
    Dim altNr As String
    Dim anzLZ As Long
    Dim letzteZeile As Long
    Dim neuNr As String
    Dim startZeile As Long
    Dim ws As Worksheet
    Dim zeile As Long
    startZeile = 6    ' Ab Zeile 6 prüfen
    anzLZ = 1         ' Eine Leerzeile einfügen
    Set ws = ActiveSheet
    altNr = Left$(ws.Cells(startZeile, "B"), 2)   'die ersten zwei Werte prüfen
    zeile = startZeile
    Do Until IsEmpty(ws.Cells(zeile, "B"))
        neuNr = Left$(ws.Cells(zeile, "B"), 2)      ' die ersten zwei werte prüfen
        If neuNr <> altNr Then
            ' Leerzeilen einfügen
            ws.Rows(zeile).Resize(anzLZ).Insert
            'zeile = zeile + anzLZ
            altNr = neuNr
            ' Name "Subtotal" einfügen und Fett
            ws.Cells(zeile, "B") = "Subtotal"
            ws.Cells(zeile, "B").Font.Bold = True
            ' Subtotal in Spalte C und D addieren - Hier ist das eigentliche Problem
            ws.Cells(zeile, "C").FormulaLocal = _
                "=SUMME(B" & startZeile & ":B" & zeile - 1 & ")"
            ws.Cells(zeile, "c").Font.Bold = True
            ws.Cells(zeile, "d").FormulaLocal = _
                "=SUMME(C" & startZeile & ":C" & zeile - 1 & ")"
            ws.Cells(zeile, "d").Font.Bold = True
            startZeile = zeile + 1
        End If
        zeile = zeile + 1
    Loop
End Sub
GrußformelHomepage


 

Beiträge aus den Excel-Beispielen zum Thema "VBA Zeile einfügen und addieren"