Excel Zelleninhalt vergleichen und einfärben

Hallo www-Gemeinde,

ich bin langsam echt am verzweifeln. Ich versuche den Zelleninhalte miteinander zu vergleiche, bekomme jedoch kein brauchbares Ergebnis hin.

A1 und B1 sollen mit n1 und o1 und nachfolgend verglichen werden und sollten Namen doppelt sein sollen sie eingefärbt werden. Sprich jeder wert von A1:1700 und B1:1700 soll mit allen werten in N1:2830 und o1:2830 verglichen werden.

Kann mir jemand bitte helfen.
Danke

hi gshock,

nochmal zum genauen verständnis, wie möchtest du die zellen genau vergleichen?

  • alle zellen aus a mit allen zellen aus n und alle zellen aus b mit allen zellen aus o? oder
  • alle zellen aus a mit allen zellen aus n und o, anschliessend alle zellen aus b mit allen zellen aus n und o? oder
  • alle zeilenkombinationen aus a und b mit allen zeilenkombinationen aus n und o? (bsp.: vor- und nachname)

mfg

ralf

Hallo Ralf,

es wäre die letzte Variante

  • alle zeilenkombinationen aus a und b mit allen

zeilenkombinationen aus n und o?

aktuell sieht das ganze bisher so aus
nur funktioniert es ned ganz und die erweiterung auf die nachbarzelle ist ned eingearbeitet. Excel stürzt quasi immer ab und ein manueller durchlauf mittels F8 dauert ewig.

Public Function Zeilen_vergleichen()
Range(„A1“).Select
Endi = Range(„A1826“).End(xlUp).Row
Range(„n1“).Select
Endj = Range(„n1826“).End(xlUp).Row
For i = 1 To Endi
For j = i To Endj
If Range(„A“ & i) = Range(„N“ & j) Then
Range(„n“ & j).Select
Selection.Interior.ColorIndex = 5
End If
Next j
Next i
End Function

mit besten grüßen

Martin

hi martin,

folgende variante sollte funktionieren:

Sub vergleich()

Dim org As Range, zelle, letzteZeile As Double, m As Byte, ok As Boolean

m = 1
letzteZeile = Cells.SpecialCells(xlCellTypeLastCell).Row
Set org = Range(„A1:B“ & letzteZeile)

Cells.Interior.Pattern = xlNone

For Each zelle In org

If m = 1 Then
ok = IIf(zelle = Range(zelle.Address).Offset(0, 13), True, False)
Else
If ok Then
If zelle = Range(zelle.Address).Offset(0, 13) Then
Range(zelle.Address).Offset(0, 12).Interior.ColorIndex = 5
Range(zelle.Address).Offset(0, 13).Interior.ColorIndex = 5
End If
End If
End If

m = IIf(m = 1, 2, 1)

Next

Set org = Nothing
End Sub

Hallo,

eiegntlich hatte ich am 5.10.2010 die Anfrage per „Reply“ in meinem Mailtool beantwortet. Aber offensichtlich klappte das wohl nicht, da bei meinem Profil bei wer-weiss-was die Anfrage immer noch als unbeantwortet steht. :frowning: Anbei deshalb die Mail, die schrieb.

Ciao

> Hallo www-Gemeinde,
Hallo,

> ich bin langsam echt am verzweifeln. Ich versuche den Zelleninhalte
> miteinander zu vergleiche, bekomme jedoch kein brauchbares Ergebnis hin.
>
> A1 und B1 sollen mit n1 und o1 und nachfolgend verglichen werden und
> sollten Namen doppelt sein sollen sie eingefärbt werden. Sprich jeder wert von
> A1:1700 und B1:1700 soll mit allen werten in N1:2830 und o1:2830 verglichen
> werden.
>
> Kann mir jemand bitte helfen.
> Danke

Ich bin zwar kein Experte für Excel, aber ich habe eben mal etwasa herumprobiert. Ob es Dir allerdings weiterhilft, weiß ich leider nicht.

Du kannst generell Werte mittels der „Wenn“-Funktion vergleichen. Dazu kannst Du in einer Zelle angeben: =Wenn(A1=N1;1;-1)
Das bedeutet, wenn der Inhalt der Zelle A1 der von N1 entspricht, ist der Zelleninhalt 1, ansonsten -1. Mittels der benutzerdefinierten Zellformatierung (Format => Zellen ; Reiter „Zahlen“, Kategorie „Benutzerdefiniert“) kannst Du zumindest dieses Feld einfärben, z.B. mit der Angabe: „[Rot]0,00;[Grün]0,00“ (ohne Hochkommata eingeben).

Willst Du allerdings direkt die Zellen einfärben (Spalten A, B, N und O), dann sehe ich eigentlich nur eine Chance mittels eines Makros.

Unter „Extras => Makro => Aufzeichnen…“ kannst Du ein Makro aufzeichnen. Wenn Du dann die Farbe einer Zelle änderst, danach die Makroaufzeichnung stoppst, kannst Du Dir anschauen, wie der Makroquelltext aussieht, um eine Zelle zu färben. Den automatisch generierten Quelltext kannst wie folgt zur Anzeige bringen:
„Extras => Makros => Visual Basic Editor“
Es öffnet sich ein neues Fenster. Links oben ist ein Frame, wo Du erst Module und dann Modul1 auswählst. Mit einem Doppelklick auf Modul1, wird rechts der aufgezeichnete Quelltext dargestellt. Da müßte etwas in dieser Art stehen:

Sub Makro1()
Range(„A1“).Select
With Selection.Interior
.ColorIndex = 6
.Pattern = xlSolid
End With
End Sub

Es wurde also das Feld A1 ausgewählt (Range(„A1“).Select) und gelb eingefärbt (.ColorIndex = 6).

Was jetzt noch nötig ist, ist eine Schleife, die die zu vergleichenden Zellen durchgeht und dann dementsprechend die Farbe setzt. Dazu müßtest Du Dich aber ein wenig mit VBA befassen, wobei das nicht so kompliziert ist. Allerdings habe ich jetzt länger nichts mit VBA gemacht. Generell müßtest Du aber eine Schleife verwenden (müßte glaube eine „For-Schleife“ in VBA geben). Innerhalb der Schleife wählst Du die aktuellen Zellen aus, vergleichst diese, setzt dementsprechend die Farbe und springst im nächsten Durchgang der Schleife zur nächsten Zeile.

Du müßtest halt das Makro dann nur von Hand starten, um die Farbe zu setzen. Evtl. gibt es da aber auch andere Möglichkeiten. Das müßtest Du dann mal recherchieren. Aber mit VBA sollte das definitiv so lösbar sein.

Ich hoffe, es hilft etwas weiter.

Ciao