Excel2000 - Vergleich von Werten

Liebe Excel-Spezialisten,

ich bin mit den Excel-Befehlen zm Vergleichen von Zelleneinträgen noch nicht so sehr vertraut und habe folgendes Problem. Es soll ein Vergleich von möglichen „Werten“ (A, B, H) in zwei Spalten vorgenommen werden und bei Übereinstimmung ‚wahr‘ bzw. ‚falsch‘ erscheinen. Die Tabelle sieht folgendermaßen aus (bisher noch ohne Spalte 3, das sind ja die Ergebnisse, die ich erwarte):

Spalte 1 Spalte 2 Spalte 3
A A wahr
A B falsch
A H falsch
B B wahr
B A falsch
B H falsch
H H wahr
H A wahr
H B wahr

Also nochmal in Worten: wenn in Spalte 1 ein A steht, dann darf in Spalte 2 ein A stehen (‚wahr‘), aber für B und H soll die Meldung ‚falsch‘ kommen. Steht in Spalte 1 ein B, dann ist in Spalte 2 das B richtig, aber nicht A und H. Und im dritten Fall sind alle Möglichkeiten (A, B, H) wahr.

Gibt es eine Möglichkeit, alle möglichen Kombinationen in einer einzigen Abfrage zu prüfen? Einzeln geht das ja, aber dann habe ich auch drei Spalten mit ‚wahr‘ und ‚falsch‘, die ich wieder prüfen muß und dann kann ich die über 13.000 paarweisen Vergleiche in meiner Tabelle auch gleich per Hand einzeln prüfen.

Kann mir noch jemand folgen? :wink:

Extrem komfortabel wäre es dann auch noch, wenn im Fall einer ‚falsch‘-Aussage die Pärchen in den Spalten 1 und 2 z.B. farbig markiert werden könnten, damit ich alle Abweichler auf den ersten Blick erfassen kann. Ist das technisch machbar?.

Für Tips zur Lösung wäre ich sehr dankbar.

Viele Grüße
Eva

ich bin mit den Excel-Befehlen zm Vergleichen von
Zelleneinträgen noch nicht so sehr vertraut und habe folgendes
Problem. Es soll ein Vergleich von möglichen „Werten“ (A, B,
H) in zwei Spalten vorgenommen werden und bei Übereinstimmung
‚wahr‘ bzw. ‚falsch‘ erscheinen.

Gibt es eine Möglichkeit, alle möglichen Kombinationen in
einer einzigen Abfrage zu prüfen? Einzeln geht das ja, aber
dann habe ich auch drei Spalten mit ‚wahr‘ und ‚falsch‘, die
ich wieder prüfen muß und dann kann ich die über 13.000
paarweisen Vergleiche in meiner Tabelle auch gleich per Hand
einzeln prüfen.
Extrem komfortabel wäre es dann auch noch, wenn im Fall einer
‚falsch‘-Aussage die Pärchen in den Spalten 1 und 2 z.B.
farbig markiert werden könnten, damit ich alle Abweichler auf
den ersten Blick erfassen kann. Ist das technisch machbar?.

Hallo Eva,
3 Schritte, sofern ich dein Anliegen richtig verstanden habe, 13000 Zeilen mit A o B oH in Spalte A und B kann ich mir zwar vorstellen, aber der Sinn fehlt mir noch*g
1.Schritt
Kopier dir folgende Formel in Zelle C1 und kopier sie dann nach unten:
=WENN(UND(A1="";B1="");"";WENN(ODER(A1=„A“;A1=„B“);WENN(A1=B1;„wahr“;WENN(ODER(B1=„A“;B1=„B“;B1=„H“);„falsch“;„Wert in B“&ZEILE()&" ist nicht A o B o H"));WENN(A1=„H“;WENN(ODER(B1=„A“;B1=„B“;B1=„H“);„wahr“;„Wert in B“&ZEILE()&" ist nicht A o B o H");„Wert in A“&ZEILE()&" ist nicht A o. B. oder H")))
Deine Tabelle müßte jetzt so aussehen:

Spalte 1 Spalte 2 Spalte 3
 A A wahr
 A B falsch
 A H falsch
 B A falsch
 B B wahr
 B H falsch
 H H wahr
 H A wahr
 H B wahr

2:Schritt
Das entsprechende Tabellenblatt ist sichtbar.
Du betätigst Alt+F11, das VB-Editor Fenster geht auf. Oben wählst du Einfügen–>Modul
In das große weiße Fenster kopierst du folgendes hinein:

Sub markieren()
For i = 1 To ActiveSheet.Cells(65536, 3).End(xlUp).Row
 If ActiveSheet.Cells(i, 3).Value "wahr" And ActiveSheet.Cells(i, 3).Value "" Then
 ActiveSheet.Range(Cells(i, 1), Cells(i, 2)).Interior.ColorIndex = 8
 End If
Next i
End Sub

Jetzt setzt du den Cursor an beliebiger Stelle in den gerade einkopiertewn Code und drückst einmal auf F5.
Mit Alt und F11 schaust du dir das Ergebnis in der tabelle an, alles wo nicht „wahr“ in Spalte C hat ist jetzt farblich unterlegt.

  1. Schritt
    wieder mit Alt und F11 in den VB-Editor wechseln.
    Links auf „Tabelle1“ doppelt klicken. Jetzt geht wieder ein großes weißes Fenster auf, dorthin kopierst du den folgenden Code:

    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column > 2 Then Exit Sub
    If ActiveSheet.Cells(Target.Row, 3).Value = „wahr“ Then
    ActiveSheet.Cells(Target.Row, 1).Interior.ColorIndex = xlNone
    ActiveSheet.Cells(Target.Row, 2).Interior.ColorIndex = xlNone
    Else
    ActiveSheet.Cells(Target.Row, 1).Interior.ColorIndex = 8
    ActiveSheet.Cells(Target.Row, 2).Interior.ColorIndex = 8
    End If
    End Sub

Jetzt kannst du das VB-Editor Fenster schließen.
Erläuterung:
Die Formeln in der Tabelle sind dir mehr oder weniger *g klar, sie erzeugen in Spalte C ein „wahr“, „falsch“ oder eine Fehlermeldung, je nach Werten in Spalte A und B.

Das Makro markieren() was du ausgeführt hast markiert alle bestehenden Zellen in A und B wenn in C kein „wahr“ steht. Dieses Makro hast du ja schon in Schritt2 ausgeführt und brauchst es dann nie mehr.
In Schritt3 wird ein spezielles Makro installiert, was automatisch bei jeder zukünftigen Zelländerung in Spalte A oder B überprüft, ob in C „wahr“ steht, wenn nicht werden A und B farblich markiert.
Gruß
Reinhard

Hallo Reinhard,

erstmal ganz herzlichen Dank für deine Hilfe. Ich werds nachher im Büro gleich ausprobieren. Bei der tollen Beschreibung dürfte ja nix schiefgehen.

13000 Zeilen mit A o B oH in Spalte A und B kann ich mir zwar
vorstellen, aber der Sinn fehlt mir noch*g

Hm, nicht ganz einfach zu erklären. Also ein kurzer Off-topic-Exkurs in die Genetik. Es handelt sich um genetische Daten von zwei Pflanzenpopulationen (Nachkommenschaften einer Kreuzung der Eltern A und B). Eine Pflanze, die in der F2-Generation an einem Markerlocus (man könnte vereinfacht hier auch Gen sagen) homozygot für das Allel des Elters A war, darf nach mehreren Selbstungen in einer späteren Generation (F7) auch nur homozygot für A sein. Gleiches gilt für Pflanzen mit einem B in der F2-Generation, die müssen B bleiben. War die Pflanze aber heterozygot (H) an diesm Locus, dann kann eine Aufspaltung in Richtung A oder B erfolgen, oder die Pflanze ist immer noch heterozygot an diesem Locus. Das ganze haben wir für ca. 350 Pflanzen and 39 Loci untersucht, macht 13650 Datenpunkte von Pärchen.
Wir wollen prüfen, ob sich bei den genetischen Untersuchungen Fehler eingeschlichen haben, ob z.B. Proben vertauscht wurden oder ähnliches.
Gibt das nun einigermaßen Sinn für dich? :wink:

Liebe Grüße
Eva

Hm, nedd ganz oifach z erkläre. Also oi kurzr Off-dobic-Exkurs in d Genedik. Es handeld si um genedische Dade vo zwei Pflanzenbobulazione (Nachkommenschafde oir Kreizung dr Elderet A und B). Eine Pflanze, d in dr F2-Generazion an oim Markerlocus (man könnde veroifachd hir au Ge sage) homozygod für des Alll vom Elders A war, darf no mehrere Selbschdunge in oir schbädere Generazion (F7) au nur homozygod für A soi. Gleichs gild für Pflanze mid oim B in dr F2-Generazion, d müsse B bleibe. War d Pflanze abr hederozygod (H) an diesm Locus, noh kann oi Aufschbaldung in Richdung A odr B erfolge, odr d Pflanze isch immr no hederozygod an dem Locus. Des ganze hend mir für ca. 350 Pflanze and 39 Loci undersuchd, machd 13650 Dadenbunkde vo Pärle.
Wir wolle brüfe, ob si bei den genedische Undersuchunge Fehlr oigeschlile hend, ob z.B. Probe verdauschd wurde odr ähnlichs.
Gibd des nun oiigermaße Sinn für di? :wink:
Liab Grüße
Eva

Moin Eva,
auch übersetzt *smile* s.o. verstehe ich es trotz deiner sehr guten Erklärung nur ähem punktuell. Aber macht ja nichts, ich versteh ja das Innenleben meines ebenfalls blauen Handys auch nicht, aber es reicht zum Telefonieren:smile:
Lieben Gruß nach Esslingen
Reinhard

Moin Reinhard,

ja ja, der schwobifying-proxy *g* Immer wieder spaßig :wink:
Dabei bin ich ja gar keine Eingeborene, jedenfalls nicht aus Esslingen, sondern eine zugewanderte Bajuwarin, die hier bei den Schwaben ein Exilantendasein fristet…

Moin Eva,
auch übersetzt *smile* s.o. verstehe ich es trotz deiner sehr
guten Erklärung nur ähem punktuell. Aber macht ja nichts, ich
versteh ja das Innenleben meines ebenfalls blauen Handys auch
nicht, aber es reicht zum Telefonieren:smile:
Lieben Gruß nach Esslingen
Reinhard

Das mit ‚ähem punktuell‘ geht schon ok so. Dafür verstehe ich ja auch die Excel-Funktionen nur ‚ähem punktuell‘ :wink:

Habs übrigens noch nicht ausprobiert mit deinem Vorschlag, aber ich geb dir ne Rückmeldung, so bald ich deine Formeln und Makros eingebaut habe.

Viele Grüße
Eva

Hallo Reinhard und Eva,

zumindest der erste Teil geht auch viel einfacher:

Schreibe in Zelle C1 die Formel „=A1=B1“ und kopiere sie runter. Das hat den gleichen Effekt und ist übersichtlicher :smile:.

Gruß Kubi

zumindest der erste Teil geht auch viel einfacher:
Schreibe in Zelle C1 die Formel „=A1=B1“ und kopiere sie
runter. Das hat den gleichen Effekt und ist übersichtlicher

Hallo Kubi,
du meintest sicher
=A1=B1
ja klar, geht für einige Fälle, das stimmt aber leider nicht für die Hs, weiterhin erscheint auch „wahr“ wenn A1 und B1 leer sind, oder in beiden das gleiche irgendwas steht.
Gruß
Reinhard

Hallo Reinhard,

erst mal ne Rückmeldung - dein Vorschlag hat einwandfrei funktioniert :smile:
Du hast mir Stunden mühsames suchen und vergleichen erspart *uff*

Jetzt noch ne Nachfrage zu Schritt 2 und 3.
Wenn ich nicht alle 39 Datensätze untereinander, sondern nebeneinander sehen will (also jeweils zwei Spalten mit A/B/H und dann die dritte Spalte mit wahr/falsch und das ganze 39 oder x mal nebeneinander), wie muß ich dann die Befehle in Schritt 2 und 3 abändern?
Wo ist definiert, daß sich das Makro zum Einfärben der ‚falsch‘-Pärchen nur auf die Spalten A, B und C auswirkt?

Viele Grüße
Eva

Jetzt noch ne Nachfrage zu Schritt 2 und 3.
Wenn ich nicht alle 39 Datensätze untereinander, sondern
nebeneinander sehen will (also jeweils zwei Spalten mit A/B/H
und dann die dritte Spalte mit wahr/falsch und das ganze 39
oder x mal nebeneinander), wie muß ich dann die Befehle in
Schritt 2 und 3 abändern?
Wo ist definiert, daß sich das Makro zum Einfärben der
‚falsch‘-Pärchen nur auf die Spalten A, B und C auswirkt?

Hallo Eva,
schön dass es funktioniert hat.
Ich denke, es würde ausufern wenn ich/wir hier beginnen die beiden Makros zu erläutern, denn für die neue Tabelle, mit 39 oder x Spaltendreierreichen nebeneinander müssen die Makros sowieso erweitert werden.
Nur zum Grundsatz. Eine Zelle (ich nehm mal Zelle D13) kann ich per Makro ähnlich wie in Excel mit Range(„D13“) ansprechen und dann z.b. eine Farbe zuweisen mit „Range(„D13“).interior.colorindex=8“.
Um jetzt aber viele Zellen nacheinander anzusprechen ist D13-Schreibweise unvorteilhaft durch den Buchstaben. Deshalb nimmt man da Cells. Zelle D13 spreche ich dann mit Cells(13,4) an. Es ist gewöhnungsbedürftig dies zu lesen denn da werden Reihenfolge von Zeile und Spalte gegenüber D13-Schreibweise vertauscht. Die Syntax von Cells ist Cells(Zeile,Spalte), D ist die 4te Spalte, 13 ist die Zeile, somit ergibt sich diese Cells(13,4) Schreibweise.
Der Bereich D13:smiley:25 ist dann Range(„D13:smiley:25“) und somit auch Range(Cells(13,4),Cells(25,4)).
Jetzt, durch diese Schreibweise kann man leicht durch Zählschleifen in Makros auf viele Zellen nacheinander zugreifen. Beispiel:
For x = 1 To 100
Cells(x,4).Interior.Colorindex=8
Next x
Die Zählschleife, also der Wert der Variablen „x“ läuft von 1 bis 100, bzw. die Zählschleife wird 100mal durchlaufen.
Im ersten Durchlauf wird Cells(1,4), dann Cells(2,4) usw angesprochen.
Interior ist der Zellenhintergrund und Colorindex gibt die eigentliche Farbe an. (Excel kann 56 Farben darstellen).
Somit ist klar warum nachfolgend die 3 (für Spalte C) auftaucht.

Sub markieren()
For i = 1 To ActiveSheet.Cells(65536, 3).End(xlUp).Row
If ActiveSheet.Cells(i, 3).Value „wahr“ And ActiveSheet.Cells(i, 3).Value „“ Then
ActiveSheet.Range(Cells(i, 1), Cells(i, 2)).Interior.ColorIndex = 8
End If
Next i
End Sub
Mit If frage ich eine Bedingung ab, also ob die jeweilige Zelle nicht () den Wert(Value) „wahr“ hat und ob was drinsteht (""). Falls dies zutrifft wird alles bis End If ausgeführt.
Um herauszufinden in welcher Zeile die letzte benutze Zelle in Spalte C steht benutze ich ActiveSheet.Cells(65536, 3).End(xlUp).Row.
Es beginnt ganz zuunterst in Spalte C und ‚hüpft‘ dann durch das End(xlup) zur letzten benutzen Zelle. Mit Row krieg ich dann dereen Zeilennummer.
Im zweiten Makro, steckt in Target die Zelle drin, die gerade geändert wurde. Deshalb wird gleich am Anfang geprüft ob da die Spalte größer 2 ist, also nicht A oder B, wenn ja, wird nichts gemacht (Exit sub)
Dann wird geprüft ob in C wahr steht usw.
Da auch eine Änderung darin bestehen kann dass aus „falsch“ „wahr“ wurde, muss ja dann die farbe wieder zurückgestzt werden (xlnone).
Ich habe dies jetzt so detailliert erläutert weil alles Genannte in anderer Form wieder auftauchen wird in den neuen Makros, die dann für die neue Tabelle mit 39 Dreierblocks nebeneinander gelten. Somit kannst du dann dort später selbst Anpassungen vornehmen.
So, jetzt mal genauer zur neuen Form. Sollen da Überschriften mit rein? wieviele Zeilen hoch. Soll jeweils links neben den DreierSpalten eine Spalte für Pflanzenbezeichnungen sein und rechts davon eine Spalte für Bemerkungen. Es ist kein Akt, diese Hilfsspalten je nach Wunsch per einem Mausklick ein- oder auszublenden. Weiterhin, zur Lesbarkeit bei minimal 39*3=120 Spalten nebeneinander, soll abwechselnd immer eine Zeile weiss. die nächste ganz leicht farblich unterlegt sein?
Gibt es da Auswertungen die man gleich mit einbauen kann? Also dass nur beliebige 2 der 39 Datenblöcke nebeneinander zum besseren Vergleich angezeigt werden? Oder wieviele Wahr’s die eine im Vergleich zur anderen hat? Oder oder…*g
Es ist bedeutend einfacher dieses jetzt miteinzuplanen als später einzufügen.
Melde dich mal hier, dann schicke ich demenstsprechend den Tabellenentwurf an deine Emailadresse oder sende mir eine Beispieltabelle wo ich erkennen kann wo was wie stehen soll, so mit 20 fiktiven Pflanzen und deren Locis.
Gruß aus dem sonnigen Frankfurt
Reinhard

1 „Gefällt mir“

Hallo Reinhard,

du meintest sicher
=A1=B1

Schrieb ich doch auch, oder?

ja klar, geht für einige Fälle, das stimmt aber leider nicht
für die Hs,

Wieso das denn nicht? Selbstverständlich geht das auch für H.

weiterhin erscheint auch „wahr“ wenn A1 und B1
leer sind, oder in beiden das gleiche irgendwas steht.

Das stimmt, aber soweit ich das Ausgangsposting verstanden habe, taucht das nicht auf…

Gruß Kubi

ja klar, geht für einige Fälle, das stimmt aber leider nicht
für die Hs,

Wieso das denn nicht? Selbstverständlich geht das auch für H.

Moin Kubi,
okay, manches ist Ansichtssache und viele Wege führen nach Rom, kein Problem. 
Aber an der Tatsache dass
C1: =A1=B1
C2: =A2=B2
C3: =A3=B3
nicht die verlangte Anzeige
 A B C
1 H A wahr
2 H B wahr
3 H C wahr
ergeben, geht kein Weg vorbei. 
Dass Wenn(A1=B1;... kürzer ist als Wenn(Und(A1="A";B1="A");... ist ja richtig und sinnvoll.
Gruß
Reinhard

Mea culpa…
Tut mir leid, hatte Tomaten auf den Augen. Ich habe nur oben „bei Übereinstimmung“ gelesen, und nicht gesehen, daß bei H alles wahr sein soll…

Ein zerknirschter Kubi

Danke dir
Hi Kubi,
da ich dich hier schon öfters las wurd ich schon verdammt unsicher dass ich da was übersehen hatte oder den falschen Denk mache *gg*
Gruß
Reinhard, wieder stabilisiert :smile: