1.3k Aufrufe
Gefragt in Tabellenkalkulation von
Liebe Community,

ich habe ein leicht vertracktes Problem. Ich habe zwei Tabellen in Sheet A und Sheet B, deren Werte ich miteinander vergleiche. Wenn allerdings in Sheet B Spalten hinzugefügt oder gelöscht worden sind, verschiebt sich alles, sodass mein Makro die Werte nicht mehr richtig miteinander vergleicht. Deshalb suche ich nach einem Makro, welches die Header (Zeile 1) beider Sheets vergleicht und für den Fall dass in B mehr Spalten sind, diese kopiert und an der gleichen Stelle in Sheet A einfügt.
Ich habe schon ein wenig rumprobiert, aber meine Versuche verliefen alle im Sande.
Habt ihr vllt. eine Idee, sie würde mir wirklich helfen:)

3 Antworten

0 Punkte
Beantwortet von m-o Profi (22.9k Punkte)
Hallo Gimly,

es müssten ja nicht nur Spalten hinzugefügt, sondern ggf. auch wieder gelöscht werden. Also würde ein Makro, dass nur fehlende Spalten einfügt dir nicht weiterhelfen.

Hast du dir schon mal überlegt ggf.mit Bereichsnamen zu arbeiten?
Siehe z.B. hier.

Oder aber du nutzt Variablen für die Spaltenangabe, die du anhand der Überschriften im Makro zuweist.

Gruß

M.O.
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all ^^

ein Beispiel

gruss nighty

Sub SPergaenzen()
Dim Wks1Index As Integer, Wks2Index As Integer
Dim IndexZ As Boolean
Application.ScreenUpdating = False
For Wks2Index = 1 To Worksheets(2).Rows(1).End(xlToRight).Column
For Wks1Index = 1 To Worksheets(1).Rows(1).End(xlToRight).Column + 1
If Worksheets(2).Cells(1, Wks2Index) = Worksheets(1).Cells(1, Wks1Index) Then
IndexZ = True
Exit For
End If
Next Wks1Index
If IndexZ = False Then
Worksheets(2).Columns(Wks2Index).Copy
Worksheets(1).Columns(Wks2Index).Insert Shift:=xlToLeft
End If
IndexZ = 0
Next Wks2Index
Application.ScreenUpdating = True
End Sub
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all ^^

bei
IndexZ = 0

0 durch false ersetzen :-))

gruss nighty
...