Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zeilen einfügen wenn Bedingung / Formula local

Zeilen einfügen wenn Bedingung / Formula local
15.05.2014 13:27:46
Cédric

Hallo Liebe Comunity
Ich sollte bei einer Datenreihe
110000 XGD
500000 GTH
500001
510000 HTZ
Jeweils bei einem neuen 100ertausenderschritt (also bei 110000 und 50000 und 510000) eine leere Zeile oben einfügen.
Bei 500000 Lohnsumme reinschreiben
bei 570000 Sozialleistungen
und bei 580000 Sachaufwand.
Ich habe versucht mit einer Hilfszeile zu arbeiten (untenstehend) aber vielleicht gehts das ja sogar noch einfacher?
Vielen Dank
Anbei mein Versuch
' Range("H2").Select
' Active.Sheet.Range("H2").FormulaLocal = "=WENN(B6="""";2;WENN(B4="""";'1;WENN(((LINKS(B5;2)*1)-(LINKS(B4;2)*1))[grösser]0;1;2)))"
' Range("H2").Select
' Selection.AutoFill Destination:=Range("H2:H489"), Type:=xlFillDefault
' Range("H2:H999").Select
'Dim a As Long
' a = 999
' For a = 999 To 2 Step -1
' If Cells(a, 8) = 1 Then Rows(a).Insert Shift:=xlDown
'Next a
Dieser verlangt aber nach einem Objekt. :-(
Ich bedanke mich bereits im vorraus überschwenglichst

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilen einfügen wenn Bedingung / Formula local
15.05.2014 15:26:28
fcs
Hallo Cédric,
der Objekt-Fehler passiert hier:
Active.Sheet.Range("H2").FormulaLocal = .....
Der Punkt nach Active ist zu viel. Aber irgendwie komm ich mit deiner Formel nicht klar.
Es sollte aber auch ohne Hilfssspalte funktionieren, wenn man die beiden ersten Ziffern in einer Variable zwischenspeichert und mit den Werten in den Zeilen vergleicht.
Sollte etwa wie folgt funktionieren. Das Einfügen der Texte in die eingefügte Zeile kann man dabei über einen Nummernvergleich steuern.
Gruß
Franz
Sub aaTest()
Dim a As Long
Dim varWert, varWert2
Dim wks As Worksheet
Set wks = ActiveSheet
With wks
a = .Cells(.Rows.Count, 2).End(xlUp).Row
'Vergleichswert in der letzten Zeile merken
varWert = Val(Left(.Cells(a, 2).Text, 2))
For a = a - 1 To 1 Step -1
varWert2 = Val(Left(.Cells(a, 2).Text, 2))
If varWert  varWert2 Then
.Rows(a + 1).Insert Shift:=xlDown
varWert = Val(Left(.Cells(a, 2).Text, 2))
varWert2 = ""
Select Case Val(.Cells(a + 2, 2).Text)
Case 500000: varWert2 = "Lohnsumme"
Case 570000: varWert2 = "Sozialleistungen"
Case 580000: varWert2 = "Sachaufwand"
End Select
If varWert2  "" Then
.Cells(a + 1, 2).Value = varWert2
End If
End If
Next a
End With
End Sub

Anzeige
AW: Zeilen einfügen wenn Bedingung / Formula local
15.05.2014 15:46:39
Cédric
Danke vielmals, funktioniert!
Zum Verständniss eine Frage, wenn ich jetzt das ganze unter die letze Zeile der Gruppierung schreiben möchte? (und toll wäre es, wenn es nur 1 Leerspalte und nicht 3 wären)
Sozialleistungen
570000 AHV, IV, EO, ALV
570001 AHV, IV, EO, ALV RST
571000 FAK
571001 FAK RST
Also unter 571001 (die Anzahl von 4 Feldern ist nicht fix).
Zusatzfrage, es wäre jetzt noch toll das ganze in der spalte E pro Gruppe zu summieren. Besteht da eine Möglichkeit ohne meine Hilfsspalte?
Danke super Tipp!!

AW: Zeilen einfügen wenn Bedingung / Formula local
15.05.2014 16:53:38
fcs
Hallo Cédric,
hier das Makro mit Leerzeilen, Beschriftung und Gruppensummierung unterhalb jeder Gruppe.
Gruß
Franz
Sub aaTest()
Dim a As Long
Dim varWert, varWert2
Dim wks As Worksheet
Dim Zeile_L As Long, Zeile_1 As Long
Set wks = ActiveSheet
With wks
a = .Cells(.Rows.Count, 2).End(xlUp).Row
varWert = 0
For a = a To 1 Step -1
varWert2 = Val(Left(.Cells(a, 2).Text, 2))
If varWert  varWert2 Or a = 2 Then
If Zeile_1  0 Then
.Cells(Zeile_L + 1, 5).FormulaR1C1 = _
"=SUBTOTAL(9,R[-" & (Zeile_L - Zeile_1 + 1) & "]C:R[-1]C)"
End If
varWert2 = ""
Select Case Val(.Cells(a + 1, 2).Text)
Case 110000: varWert2 = "Test"
Case 500000: varWert2 = "Lohnsumme"
Case 570000: varWert2 = "Sozialleistungen"
Case 580000: varWert2 = "Sachaufwand"
End Select
If varWert2  "" Then
.Cells(Zeile_L + 1, 2).Value = varWert2
End If
If a = 1 Then Exit For
.Rows(a + 1).Insert Shift:=xlDown
varWert = Val(Left(.Cells(a, 2).Text, 2))
Zeile_L = a
Zeile_1 = Zeile_L
Else
Zeile_1 = a
End If
Next a
End With
End Sub

Anzeige

311 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige