Tabellen/Spalten vergleichen (VBA)

Rabia, Dienstag, 21.06.2016, 14:43 (vor 1247 Tagen)

Hallo,

ich habe folgendes Problem.
Ich möchte die Spalte A in Tabelle1 mit der Spalte B in Tabelle2 vergleichen.
Wenn in Tabelle1 (Spalte A) Werte enthalten sind, die nicht in Tabelle2 (Spalte B)vorkommen, soll eine Fehlermeldung angezeigt werden.
Anschließend soll eine zweite Meldung mit den Werten angezeigt werden, die in Tabelle2 fehlen.

Grüße
Rabia

Tabellen/Spalten vergleichen

Martin Asal @, Dienstag, 21.06.2016, 15:00 (vor 1247 Tagen) @ Rabia

Sub vergleiche()
Dim BereichA As Range, ZelleA As Range
Dim BereichB As Range, ZelleB As Range
Dim Wert, AlleWerte
Dim Vergleich As Boolean
 
Set BereichA = ActiveWorkbook.Worksheets("Tabelle1").Range("A6:A20")
Set BereichB = ActiveWorkbook.Worksheets("Tabelle2").Range("B6:B20")
 
For Each ZelleA In BereichA
    Wert = ZelleA.Value
    For Each ZelleB In BereichB
        Vergleich = False
        If ZelleB.Value = Wert Then
            Vergleich = True
            Exit For
        End If
    Next
    If Not Vergleich Then
        MsgBox Wert & " fehlt"
        AlleWerte = AlleWerte & Wert
    End If
Next
MsgBox AlleWerte
End Sub
 
 

Martin

Tabellen/Spalten vergleichen

Rabia, Dienstag, 21.06.2016, 15:17 (vor 1247 Tagen) @ Martin Asal

Vielen Dank für die schnelle Antwort!
Für jede fehlende Zeile erscheint eine Meldung: fehlt

Doch es soll nur eine Fehlermeldung erscheinen wenn in Tabelle2 ein oder mehrere Werte fehlen.
Hast du auch dafür eine Lösung?

Tabellen/Spalten vergleichen

Rabia, Dienstag, 21.06.2016, 15:23 (vor 1247 Tagen) @ Rabia

Wenn es möglich ist soll nach der Fehlermeldung eine weitere Meldung mit den fehlenden Werte erscheinen.
Außerdem sollen Zeilen mit einem Colorindex einfach übersprungen also nicht verglichen werden.
Wenn das alles klappt wäre es echt Super!

Tabellen/Spalten vergleichen

Martin Asal @, Dienstag, 21.06.2016, 15:24 (vor 1247 Tagen) @ Rabia

Doch es soll nur eine Fehlermeldung erscheinen wenn in Tabelle2 ein oder mehrere Werte fehlen.

Dann habe ich die Frage nicht verstanden.

Momentan wird jeder einzelne Wert in Tabelle1 eingelesen und gesucht, ob es ihn irgendwo in Tabelle2 gibt. Wenn nicht, gibt es eine Fehlermeldung und zuletzt werden die fehlenden Werte nochmal "am Stück" ausgegeben. Was ist daran anders als das, was dir vorschwebt?

Martin

Tabellen/Spalten vergleichen

Rabia, Dienstag, 21.06.2016, 15:45 (vor 1247 Tagen) @ Martin Asal

Momentan erscheint für jeden fehlenden Wert jeweils eine Meldung: fehlt.
(Nach jedem Ok-Klick wiederholt es sich bis die fehlenden Zeilen durchgelaufen sind.)
Danach erschein eine leere MsgBox.

Es soll insgesamt nur eine Fehlermeldung erscheinen.
Anschließend soll eine Meldung mit den fehlenden Werten, wie du auch schon gesagt hast "in einem Stück" erscheinen.

Tabellen/Spalten vergleichen

Martin Asal @, Dienstag, 21.06.2016, 17:31 (vor 1246 Tagen) @ Rabia

Was passiert, wenn in den zu vergleichenden Feldern Texte stehen?

Martin

Tabellen/Spalten vergleichen

Rabia, Mittwoch, 22.06.2016, 08:51 (vor 1246 Tagen) @ Martin Asal

Es tauchen erneut mehrere ... fehlt-Meldungen auf und anschließend die letzte Meldung mit allen fehlenden Werten.

Bsp:
1. Meldung: a fehlt
2. Meldung: b fehlt
3. Meldung: c fehlt
.
.
.
letzte Meldung: abc

Tabellen/Spalten vergleichen

Martin Asal @, Mittwoch, 22.06.2016, 09:25 (vor 1246 Tagen) @ Rabia

Also wenn ich dich richtig verstanden habe, musst du ja nur die im Code zuerst auftauchende MsgBox-Zeile rausnehmen, dann bekommst du auch nur noch die letzte Meldung, wie gewünscht.

Martin

Tabellen/Spalten vergleichen

Rabia, Mittwoch, 22.06.2016, 10:42 (vor 1246 Tagen) @ Martin Asal

Ich brauche insgesamt 2 Meldungen.
Die erste Meldung soll eine Fehlermeldung sein, wenn in Tabelle2 Werte fehlen. Dabei sollen die in Tabelle1 mit Farbe gefüllten Zellen nicht beachtet also ausgelassen werden (Habe ich bei der ersten Nachricht nicht erwähnt).
Also wenn z.B. der Wert "2" in Tabelle1 mit Farbe gefüllt ist und das der einzige Wert ist der in Tabelle2 fehlt, soll eine Meldung "OKAY" erscheinen (auch wenn allgemein keine Werte fehlen).
Wenn aber der Wert in Tabelle1 nicht gefüllt ist und es in Tabelle2 fehlt, dann soll eine Fehlermeldung (auch bei mehreren fehlenden Werte nur eine Fehlermeldung) ausgegeben werden. Nach dieser einen Fehlermeldung noch eine Meldung mit den fehlenden Werte (außer die in Tabelle1 gefärbten/gefüllten Werte).

Ich hoffe ich hab es diesmal verständlicher formuliert.

Tabellen/Spalten vergleichen

Martin Asal @, Mittwoch, 22.06.2016, 11:52 (vor 1246 Tagen) @ Rabia

Die erste Meldung soll eine Fehlermeldung sein, wenn in Tabelle2 Werte fehlen. Dabei sollen die in Tabelle1 mit Farbe gefüllten Zellen nicht beachtet also ausgelassen werden (Habe ich bei der ersten Nachricht nicht erwähnt).
Also wenn z.B. der Wert "2" in Tabelle1 mit Farbe gefüllt ist und das der einzige Wert ist der in Tabelle2 fehlt, soll eine Meldung "OKAY" erscheinen

OK, soweit klar. Ist ja auch einfach: Offensichtlich sind dir nur die Funktionen IsEmpty() sowie die Konstante vbNewLine nicht bekannt gewesen, um den Code nach deinen Vorstellungen selbst umzugestalten. Der folgende Code setzt das um, und wenn du ihn dir anschaust, wirst du feststellen, dass die Änderungen gegenüber der ersten Version minimal sind. So kommst du bestimmt schnell dahinter :-)

Sub vergleiche()
Dim BereichA As Range, ZelleA As Range
Dim BereichB As Range, ZelleB As Range
Dim Wert, AlleWerte
Dim Vergleich As Boolean
 
Set BereichA = ActiveWorkbook.Worksheets("Tabelle1").Range("A6:A20")
Set BereichB = ActiveWorkbook.Worksheets("Tabelle2").Range("B6:B20")
 
For Each ZelleA In BereichA
    If ZelleA.Interior.ColorIndex = xlColorIndexNone Then
        Wert = ZelleA.Value
        For Each ZelleB In BereichB
            Vergleich = False
            If ZelleB.Value = Wert Then
                Vergleich = True
                Exit For
            End If
        Next
        If Not Vergleich Then AlleWerte = AlleWerte & vbNewLine & Wert
    End If
Next
 
If IsEmpty(AlleWerte) Then
    MsgBox "OK!"
Else
    MsgBox "Es fehlt:" & AlleWerte
End If
End Sub
 

Dabei sollen die in Tabelle1 mit Farbe gefüllten Zellen nicht beachtet also ausgelassen werden

Als jemand aus der Datenbankecke wird mir ja immer schlecht, wenn ich lese, wie Excelianer eine krude Mischung aus Design und Content anstellen. Möglicherweise musst du die Zeile mit der Farbprüfung noch anpassen, z.B. nicht ColorIndex, sondern Color, und dann den RGB-Farbwert angeben. Kommt ganz auf deine Logik bei der Farbgestaltung an.

Wenn aber der Wert in Tabelle1 nicht gefüllt ist und es in Tabelle2 fehlt

Das verstehe ich immer noch nicht: "Nicht gefüllt" soll wohl "leere Zelle" heißen? Aber was immer du damit vorhast, solltest du leicht hinbekommen, wenn du auf IsEmpty(ZelleA.Value) prüfst.

Martin

Tabellen/Spalten vergleichen

Rabia, Mittwoch, 22.06.2016, 14:10 (vor 1246 Tagen) @ Martin Asal

Vielen Dank!
Das erfüllt schon den Großteil meiner Frage.:-D

Tabellen/Spalten vergleichen

Rabia, Dienstag, 21.06.2016, 16:26 (vor 1247 Tagen) @ Martin Asal

Tut mir Leid, ich habe grade entdeckt, dass in Tabelle2 keine Werte gefehlt haben.
Jetzt hab ich in Tabelle1 zusätzliche Werte eingefügt um es zu testen.

Nun siehts so aus:
Bei jede fehlende Zeile erschein der fehlende Wert und das Wort "fehlt"

1 fehlt
2 fehlt
3 fehlt

Danach erscheint die Meldung: 123


Doch so sollte es ein:

1. Meldung: "Fehlermeldung: es fehlen Werte in Tabelle2"
2. Meldung: "folgende Werte fehlen: 1
2
3

Ansonsten falls alle Werte vorhanden sind soll einfach eine Meldung:"OKAY" auftauchen.

RSS-Feed dieser Diskussion
powered by my little forum