Hi Sebastian,
das Makro selbst glaube ich ist kein Problem, aber die Anforderung ist etwas unpräzise.
Brauchst du zwei Makros, oder kann das nicht gleich alles in einem gemacht werden? Gibt man die Artikelnummer an, die man sucht, oder sucht man mehrere aus einer Liste? Wenn vor jeder Arikelnummer 4 Leerzeilen eingefügt werden sollen, dann verstehe ich die unterschiedliche Größe der Blöcke nicht.
Ich bin mir nicht sicher wie ich Dir am besten helfen kann, da du meinst kein Makro Erfahrung zu haben.
Ich würde es demnach so einfach wie möglich halten.
Hier ein kleines Makro, dass die Spalte A von unten nach oben durchsucht. Der Einfachheit halber einfach mal von Zeile 1300 zu Zeile 2
Den Makro-Editor öffnen (Alt+F11) und links im Projektfester "Tabelle 1"öffnen oder „Diese Arbeitsmappe“ doppelklicken.
Dann im Fenster folgendes Maro einfügen.
Sub durchlaufeTabelleVonUntenNachOben()
'Variablen als Ganzzahlen deklarieren
Dim aktuelleZeile, StartZeile, StopZeile As Integer
Dim BerechnungsoptionMerken As Variant
'Damit es schneller geht die automatische Berechnung und Die Monitordarstellung deaktivieren
BerechnungsoptionMerken = Application.Calculation
Application.Calculation = xlCalculationManual 'ganz WICHTIG, SONST DAUERT DAS MAKRO EWIG
Application.ScreenUpdating = False
'Start und Stopzeile definieren
StartZeile = 1300
StopZeile = 2
'Durchlaufe alle Zeilen von Startzeile bis Stopzeile
For aktuelleZeile = StartZeile To StopZeile Step -1
'Prüfe den Wert der aktuellen Ziele in Spalte 1 (=A), ist dieser
'leer dann führe einige Befehle aus
'Hier kann man auch nach anderen Kriterien suchen
If ActiveSheet.Cells(aktuelleZeile, 1).Value "" Then
'4 mal eine Zeile einfügen
ActiveSheet.Rows(aktuelleZeile).Insert Shift:=xlDown
ActiveSheet.Rows(aktuelleZeile).Insert Shift:=xlDown
ActiveSheet.Rows(aktuelleZeile).Insert Shift:=xlDown
ActiveSheet.Rows(aktuelleZeile).Insert Shift:=xlDown
'In die erste Zeile in Spalte A eine Formel einfügen (Teilergebnis(3, aktuelle Zeile, Spalte A zu aktuelle Zeile +4)
ActiveSheet.Cells(aktuelleZeile, 1).FormulaR1C1 = "=SUBTOTAL(3, RC:R[" & 4 & "]C)"
'In Spalte B was reingeschrieben, um zu zeigen, dass sich was getan hat.
ActiveSheet.Cells(aktuelleZeile, 2).Value = "Neue Formel in Spalte A"
End If
Application.StatusBar = "Zeile: " & aktuelleZeile
Next
GoTo FehlerfreiDurchgelaufen
Fehler:
MsgBox "Es ist ein Fehler aufgetreten: " & Err.Description, vbCritical
FehlerfreiDurchgelaufen:
Application.Calculation = BerechnungsoptionMerken
Application.ScreenUpdating = True
End Sub
Ich bezweifle zwar, dass es das ist, was du brauchst aber vielleicht hilfes, am besten nimmst du mit dem Makro-Rekorder einige Aktionen auf und schaust Sie dir im Code an. Wenn du spezifischere Hilfe brauchst, bitte evtl. eine Beispieldatei senden oder besser spezifizieren.
Gruß,
Frank