Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

mehrere Spalten einer Tabelle vergleichen





Frage

Hallo zusammen, möchte mehrere Spalten in einer Tabelle per makro vergleichen. Verglichen werden sollen A mit B, E mit F, I mit J, usw..... Die Werte sind eigentlich 6-stellig. Habe diesen Code gefunden, der Spalte A mit B vergleicht. Das Ergebnis ist das gewünschte, ich weiß nur nicht, wie weitere Spalten einbezogen weden. Option Explicit Sub vergleichen() Dim lngI As Long, intWert As Integer Application.ScreenUpdating = False For lngI = 1 To Cells(Rows.Count, 1).End(xlUp).Row intWert = Application.WorksheetFunction. _ CountIf(Worksheets("Tabelle1").Range("B:B"), Cells(lngI, 1).Value) If intWert > 0 Then Cells(lngI, 1).Interior.ColorIndex = 44 End If Next lngI Application.ScreenUpdating = True End Sub Bin für jede Hilfe dankbar.

Antwort 1 von Saarbauer

Hallo,

Option Explicit
Sub vergleichen()
Dim lngI As Long, intWert As Integer
Application.ScreenUpdating = False
For lngI = 1 To Cells(Rows.Count, 1).End(xlUp).Row
intWert = Application.WorksheetFunction. _
CountIf(Worksheets("Tabelle1").Range("B:B"), Cells(lngI, 1).Value)
If intWert > 0 Then
Cells(lngI, 1).Interior.ColorIndex = 44
End If
Next lngI

For lngI = 1 To Cells(Rows.Count, 1).End(xlUp).Row

intWert = Application.WorksheetFunction. _
CountIf(Worksheets("Tabelle1").Range("F:F"), Cells(lngI, 4).Value)

If intWert > 0 Then
Cells(lngI, 1).Interior.ColorIndex = 44
End If
Next lngI

Application.ScreenUpdating = True
End Sub

Den Kusiven Text entsprechend einfügen und die fetten Stellen entsprechend ändern.

Cells(lngI, 4).Value; die 4 steht für "E" bzw. 4. Spalte

Gruß

Helmut

Antwort 2 von Hans5

Hallo Helmut,

danke für die schnelle Antwort.
Leider wird weiterhin nur die 1. Spalte eingefärbt. Hast du noch eine andere Idee?
Warum steht die 4 für spalte "E"? Müsste hier nicht die 5 stehen oder wird Spalte "A" nicht gezählt?

Gruß

Antwort 3 von Saarbauer

Hallo,

richtig muss 5 sein

und das muss auch geändert werden

Cells(lngI, 5).Interior.ColorIndex = 44



Gruß

Helmut

Antwort 4 von Hans5

Funktioniert optimal!
Herzlichen Dank.

Antwort 5 von Hans5

Noch etwas.
Gibt es eine Codierung die den Zelleninhalt durchstreicht, anstatt die Zelle farblich zu hinterlegen?

Antwort 6 von rainberg

Hallo Hans,

so geht's

Cells(lngI, 5).Font.Strikethrough = True

Gruß
Rainer

Antwort 7 von Hans5

Danke für die Antwort.
Eine letzte Frage noch.
Wenn Spalte D + E verglichen werden und die Werte in Spalte D durchgestrichen, ist es möglich die Werte bzw Texte der Spalten A bis C davon abhängig auch durchzustreichen? Die Funktion ISTWERT ist nicht ganz optimal, daher würde ich eine andere Lösung bevorzugen.

Gruß
Hans

Antwort 8 von nighty

hi all

hier noch ein beispiel

gruss nighty

Sub vergleichen1()
ScreenUpdating = False
Dim lngI As Long
Dim zaehler As Long
Dim suche As Range
Rem hier die 16 waere die max anzahl an spalten
Rem verglichen wird nun 1-2 5-6 9-10 13-14
Rem entsprechen zu erhoehen
For zaehler = 1 To 16 Step 4
For lngI = 1 To Worksheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row
Set suche = Worksheets(1).Range(Cells(1, zaehler + 1), Cells(Worksheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row, zaehler + 1)).Find(Worksheets(1).Cells(lngI, zaehler), Lookat:=xlWhole)
If Not suche Is Nothing And Worksheets(1).Cells(lngI, zaehler) <> "" Then
Worksheets(1).Cells(lngI, zaehler).Interior.ColorIndex = 44
End If
Next lngI
Next zaehler
Application.ScreenUpdating = True
End Sub


Antwort 9 von nighty

hi all

ups korrigiert

gruss nighty

Sub vergleichen1()
Application.ScreenUpdating = False
Dim lngI As Long
Dim zaehler As Integer
Dim suche As Range
For zaehler = 1 To 16 Step 4
For lngI = 1 To Worksheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row
Set suche = Worksheets(1).Range(Cells(1, zaehler + 1), Cells(Worksheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row, zaehler + 1)).Find(Worksheets(1).Cells(lngI, zaehler), Lookat:=xlWhole)
If Not suche Is Nothing And Worksheets(1).Cells(lngI, zaehler) <> "" Then
Worksheets(1).Cells(lngI, zaehler).Interior.ColorIndex = 44
End If
Next lngI
Next zaehler
Application.ScreenUpdating = True
End Sub