Hallo Donny,
sowas macht man normalerweise mit [url=
https://support.office.com/de-de/article/sverweis-funktion-0bbc8083-26fe-4963-8ab8-93a18ad188a1]SVERWEIS[/url]. Angenommen du hast in Tabelle1 Spalte A die Zahlen 1 bis 12 und Tabelle2 Spalte A die Zahlen 3, 5, 11 samt Anhang. Dann könntest du in Tabelle1 B1 die Formel =wennfehler(SVERWEIS($A1;Tabelle2!$A$1:$C$3;SPALTE(A1);0);"") verwenden und dann runter und rüber ziehen.
Falls aber beide Listen nicht durchgäng fortlaufend sind, kann ein Makro hier durchaus Sinn machen. Markiere einfach den gewünschten Bereich (muss nicht unbedingt bei A1 beginnen) und starte den Code. Probier auch mal aus, wie es aussieht wenn die Liste in Spalte 1 Lücken enthält.
[code]Sub Ausrichten()
If Selection.Rows.Count = 1 Then Exit Sub
Const insertifmissing = False 'Wenn True werden nicht vorhandene Werte nachgetragen
Set sel = Selection: r = 1
With sel
'Falls Liste nicht sortiert ist, wird das hier nachgeholt
Range(.Cells(1), .Cells(.Cells.Count)).Sort _
Key1:=.Cells(1), Order1:=xlAscending, Header:=xlNo, Orientation:=xlSortColumns
Range(.Cells(1).Offset(0, 1), .Cells(.Cells.Count)).Sort _
Key1:=.Cells(1).Offset(0, 1), Order1:=xlAscending, Header:=xlNo, Orientation:=xlSortColumns
Do
Set c1 = .Columns(1).Cells 'Spalte 1 der Markierung
Set c2 = Range(.Columns(2), .Columns(.Columns.Count)).Cells 'Spalte 2 bis n
v = c2(r, 1) 'aktuell gesuchter Wert
Set f = c1.Find(v, lookat:=xlWhole) 'gefundene Zelle
If Not f Is Nothing Then 'wenn vorhanden
p = f.Row - Selection.Row + 1 'Position in Liste
e = p - r - c2.Row + .Row 'Einzufügende Zeilen
If e > 0 Then
Range(c2(r, 1), c2(r + e - 1, c2.Columns.Count)).Insert xlShiftDown
r = r + e
End If
Else 'wenn nicht vorhanden
If c1(r) > v Then
c1(r).Insert xlShiftDown 'Wert bzw. Platzhaler wird in Spalte 1 hinzugefügt
If insertifmissing Then c1(IIf(r = 1, 0, r)).Value = v
ElseIf c1(r) < v Then
c2.Rows(r).Insert xlShiftDown 'Wert wird erst um 1 Zeile verschoben, dann neu geprüft
End If
End If
'Wenn eingefügter Bereich über die Markierung hinausgeht wird diese erweitert
If c1(.Rows.Count + 1) <> "" Or c1(.Rows.Count + 1, 2) <> "" Then
Set sel = Range(Selection, .Offset(1, 0)): sel.Select
End If
r = r + 1 'Wechsel zur nächsten Zeile
Loop Until .Cells(r, 1) = "" Or .Cells(r, 2) = ""
End With
End Sub[/code]
Gruß Mr. K.