VBA Spalten vergleichen

ilsebilse15

Grünschnabel
Hallo :)
Ich möchte in Excel gerne drei Spalten miteinander vergleichen. Diese Spalten haben einen unterschiedlichen Aufbau.
Z.B.
A B C
1 3 7
2 4 8
3 5 9
4 6 10

Die Werte, die nur in der Spalte B und nicht in A und C vorkommen sollen in (erstmal) in Spalte D geschrieben werden.

D
5
6

Hab keine Ahnung wie man das in VBA realisieren soll...
Aber ihr habt doch bestimmt eine Idee, oder?
Wäre klasse :)
 
Nur so ein kleiner, kommentierter Code:
Visual Basic:
Sub PrüfeZellen()
 'Deklarationen
 Dim lMax&, lValue&, iWert%, bThere As Boolean
 iWert = 1
 'Letzte Zeile in der zweiten Spalte ermitteln
 lMax = Application.WorksheetFunction.CountA(ActiveSheet.Columns(2))
 'Alle Zeilen in B durchgehen
 For cnt = 1 To lMax
  'Variable auf Falsch setzen
  bThere = False
  'Wert aus B auslesen
  lValue = ActiveSheet.Cells(cnt, 2).Value
  'Alle Zeilen in A und C durchgehen
  For cnt2 = 1 To lMax
   'Wenn vorhanden, dann die Variable auf Wahr setzen
   If lValue = ActiveSheet.Cells(cnt2, 1).Value Or lValue = ActiveSheet.Cells(cnt2, 3).Value Then bThere = True
  Next cnt2
  'Wenn nicht vorhanden (Variable blieb auf Falsch) dann in Zelle schreiben
  If bThere = False Then ActiveSheet.Cells(iWert, 4).Value = lValue: iWert = iWert + 1
 Next cnt
End Sub


Der Doc!
 
Visual Basic:
Sub vergleichbmitaundc()
Dim CELLa  As Range
Dim CELLb  As Range
Dim CELLc  As Range
Dim CELLd  As Range
Dim abbruch As Boolean
Dim row As Long

row = 0
While Not abbruch
    row = row + 1
    Set CELLa = ActiveWorkbook.Worksheets("Tabelle1").Range("a" & row)
    Set CELLb = ActiveWorkbook.Worksheets("Tabelle1").Range("b" & row)
    Set CELLc = ActiveWorkbook.Worksheets("Tabelle1").Range("c" & row)
    Set CELLd = ActiveWorkbook.Worksheets("Tabelle1").Range("d" & row)
    
    If CELLb.Value <> CELLa.Value Then
        If CELLb.Value <> CELLc.Value Then
            CELLd.Value = CELLb.Value
        End If
    End If
    
    abbruch = Len(CELLb.Value = 0)
Wend
End Sub

Grüsse bb

edit:
mein Beispiel ist unkommentiert und ich war langsamer als der doc ;-)
 
Zuletzt bearbeitet:
Zurück