# VBA Spalten vergleichen



## ilsebilse15 (24. April 2008)

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


----------



## DrSoong (25. April 2008)

Nur so ein kleiner, kommentierter Code:

```
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!


----------



## Alex F. (25. April 2008)

```
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 ;-)


----------



## ilsebilse15 (27. April 2008)

Klasse
Dankeschön


----------

