Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1660to1664
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
Inhaltsverzeichnis

VBA: Summewenn mit relativen Verweisen

VBA: Summewenn mit relativen Verweisen
19.12.2018 23:52:59
Jean-Pierre
Hallo Zusammen,
Mit dem untenstehenden Code werden nach jedem unterschiedlichen Wert in Spalte A vier Zeilen eingefügt. Diese vier leeren Zeilen möchte ich nun aber noch weiterverarbeiten.
Sub LeerzeilenEinfügen()
Dim altNr As String
Dim anzLZ As Long       ' Anzahl der einzufügenden Leerzeilen
Dim letzteZeile As Long
Dim neuNr As String
Dim startZeile As Long
Dim ws As Worksheet
Dim zeile As Long
startZeile = 2
anzLZ = 4
Set ws = ActiveSheet
altNr = Left$(ws.Cells(startZeile, "A"), 4)
zeile = startZeile
Do Until IsEmpty(ws.Cells(zeile, "A"))
neuNr = Left$(ws.Cells(zeile, "A"), 4)
If neuNr  altNr Then
' Leerzeilen einfügen
ws.Rows(zeile).Resize(anzLZ).Insert
zeile = zeile + anzLZ
altNr = neuNr
End If
zeile = zeile + 1
Loop
End Sub
Unter jedem "eigenen" Bereich (unterschiedlich viele Zeilen, jedoch immer 9 Spalten) soll nun folgendes stehen:
erste Leerzeile; Spalte A = Total | Spalte F = "3010" | Spalte G = Summewenn(Spalte F, jedoch nur ausgefüllte zellen dieses "Bereichs"; "3010"; Spalte G, jedoch nur ausgefüllte Zellen dieses "Bereichs")
Ich hoffe es ist halbwegs verständlich.
Über eine Antwort würde ich mich enoooorm freuen - danke!!!
Gruss Jean-Pierre

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: Summewenn mit relativen Verweisen
20.12.2018 08:49:32
Daniel
Hi
ehrlich gesagt, ich verstehe es noch nicht.
eine Beispieldatei, in welcher du zeigst wie die Ausgangslage ist und auf einem zweiten Blatt dein Wunschergebnis (von Hand erstellt) würde weiterhelfen.
gruß Daniel
AW: VBA: Summewenn mit relativen Verweisen
20.12.2018 15:06:20
Jean-Pierre
Lieber Daniel
Vielen Dank für deine Antwort. Habe mir schon gedacht, dass meine Beschreibung schwer verständlich ist.
hier findest du die Beispiel-Datei:
https://www.herber.de/bbs/user/126235.xlsx
Vielen Dank für deine Bemühungen. Bin für die Hilfe enorm danbar.
Gruss Jean-Pierre
AW: VBA: Summewenn mit relativen Verweisen
20.12.2018 20:52:58
fcs
Hallo Jean-Pierre,
hatte mich auch schon mit deinem Problem beschäfftigt.
Hier meine Lösung, die in der nach Namen sortierten Liste auch alle benötigten Leerzeilen einfügt.
LG
Franz
Sub Leerzeilen_Formeln_Einfuegen()
Dim altNr As String
Dim neuNr As String
Dim anzLZ As Long       ' Anzahl der einzufügenden Leerzeilen
Dim Zeile_L As Long
Dim startZeile As Long
Dim zeile As Long
Dim ws As Worksheet
Dim sFormel As String
startZeile = 2
anzLZ = 4
Set ws = ActiveSheet
With ws
'letzte Zeile in Spalte A
Zeile_L = .Cells(.Rows.Count, 1).End(xlUp).Row
altNr = .Cells(Zeile_L, 1).Value
For zeile = Zeile_L To startZeile Step -1
neuNr = .Cells(zeile - 1, 1).Value
If neuNr  altNr Then
' Leerzeilen unter Block einfügen
.Rows(Zeile_L + 1).Resize(anzLZ).Insert
'Werte eintragen
With .Cells(Zeile_L + 1, 2)
.Value = "Total"
.Font.Bold = True
End With
.Cells(Zeile_L + 1, 6).Value = 3010
.Cells(Zeile_L + 2, 6).Value = 3020
.Cells(Zeile_L + 3, 6).Value = 3510
'Formel einfügen
sFormel = "=SUMIF(R" & zeile & "C6:R" & Zeile_L _
& "C6,R[0]C6,R" & zeile & "C[0]:R" & Zeile_L & "C[0])"
.Range(.Cells(Zeile_L + 1, 7), .Cells(Zeile_L + 3, 9)).FormulaR1C1 = sFormel
'Linien formatieren
With .Range(.Cells(Zeile_L, 2), .Cells(Zeile_L, 9))
With .Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
End With
End With
With .Range(.Cells(Zeile_L + 3, 2), .Cells(Zeile_L + 3, 9))
With .Borders(xlEdgeBottom)
.LineStyle = xlDouble
End With
End With
'Zeile einfügen und Name in SPalte B eintragen
.Rows(zeile).Insert
With .Cells(zeile, 2)
.Value = altNr
.Font.Bold = True
End With
Zeile_L = zeile - 1
altNr = neuNr
End If
Next
'Spalte A ausblenden
.Columns(1).Hidden = True
End With
End Sub

Anzeige
AW: VBA: Summewenn mit relativen Verweisen
21.12.2018 16:01:38
Jean-Pierre
Lieber Franz
Deine Lösung funktioniert wunderbar. Herzlichen Dank dafür!
Nun hätte ich noch ein kleines Anliegen. In der Zusammenfassung sind ja immer drei zahlen aufgeführt. (3010, 3020 & 3510). Wenn jetzt bei einer Zahl nichts mit der Summewennformel zusammengerechnet wird, benötige ich diese beim Total nicht. So könnte ich etwas Platz sparen. Wie könnte man deinen Code abändern, sodass beim Total eine nicht benötigte Zahl automatisch rausgelöscht wird?
Vielen Dank für deine/eure Antworten.
Jean-Pierre
AW: VBA: Summewenn mit relativen Verweisen
22.12.2018 15:52:05
Jean-Pierre
Hallo Franz
Dein Code funktionierte in der Beispieldatei wunderbar. Wenn ich diesen Code aber auf das richtige Dokument anwende, entsteht ein Laufzeitfehler '13' "Typen unverträglich". Im Editor werde ich auf folgende Zeile verwiesen:
Sub Leerzeilen_Formeln_Einfuegen()
Dim altNr As String
Dim neuNr As String
Dim anzLZ As Long       ' Anzahl der einzufügenden Leerzeilen
Dim Zeile_L As Long
Dim startZeile As Long
Dim zeile As Long
Dim ws As Worksheet
Dim sFormel As String
startZeile = 2
anzLZ = 4
Set ws = ActiveSheet
With ws
'letzte Zeile in Spalte A
Zeile_L = .Cells(.Rows.Count, 1).End(xlUp).Row
altNr = .Cells(Zeile_L, 1).Value
For zeile = Zeile_L To startZeile Step -1
neuNr = .Cells(zeile - 1, 1).Value
If neuNr  altNr Then
' Leerzeilen unter Block einfügen
.Rows(Zeile_L + 1).Resize(anzLZ).Insert
'Werte eintragen
With .Cells(Zeile_L + 1, 2)
.Value = "Total"
.Font.Bold = True
End With
.Cells(Zeile_L + 1, 6).Value = 3010
.Cells(Zeile_L + 2, 6).Value = 3020
.Cells(Zeile_L + 3, 6).Value = 3510
'Formel einfügen
sFormel = "=SUMIF(R" & zeile & "C6:R" & Zeile_L _
& "C6,R[0]C6,R" & zeile & "C[0]:R" & Zeile_L & "C[0])"
.Range(.Cells(Zeile_L + 1, 7), .Cells(Zeile_L + 3, 9)).FormulaR1C1 = sFormel
'Linien formatieren
With .Range(.Cells(Zeile_L, 2), .Cells(Zeile_L, 9))
With .Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
End With
End With
With .Range(.Cells(Zeile_L + 3, 2), .Cells(Zeile_L + 3, 9))
With .Borders(xlEdgeBottom)
.LineStyle = xlDouble
End With
End With
'Zeile einfügen und Name in SPalte B eintragen
.Rows(zeile).Insert
With .Cells(zeile, 2)
.Value = altNr
.Font.Bold = True
End With
Zeile_L = zeile - 1
altNr = neuNr
End If
Next
'Spalte A ausblenden
.Columns(1).Hidden = True
End With
End Sub
Woran liegt das?
LG
Anzeige
AW: VBA: Summewenn mit relativen Verweisen
22.12.2018 15:53:23
Jean-Pierre
Man kann das fett markierte nicht gut sehen.
Der Fehler bezieht sich auf folgende Zeile:
altNr = .Cells(Zeile_L, 1).Value
LG

308 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige