Vergleich zweier Daten und Ausgabe in Msgbox

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Vergleich zweier Daten und Ausgabe in Msgbox von: Tom
Geschrieben am: 08.02.2005 09:47:45

Hallo liebe Forum-User,

erstmal vielen DAnk an die zahlreichen Postings, die ich in diesem Forum bereits gefunden habe und die mir sehr geholfen haben. Nun will ich auch mal eine Frage formulieren, weil ich echt nicht weiterkomme...

Ich habe in zwei verschiedenen Spalten in unterschiedlichen Blättern Daten. Bsp. in "Tabelle1" in SpalteI stehen 1, 3, 5, 6, 9. Im zweiten Blatt "Tabelle2" stehen in SpalteF 3, 3, 4, 5, 8, 8, 9.

Nun brauche ich ein Makro, dass diese Werte vergleicht und mir dann in einer MessageBox sagt:" Die Zahlen 1 und 6 wurden nicht berücksichtigt!".
Das sind nämlich die Werte, die in SpalteI stehen und in SpalteF nicht.

Ich hoffe ich habe micht verständlich ausgedrückt und jemand kann mir helfen...ich komme nämlich nicht weiter!

Danke und Gruß, TOM

Bild


Betrifft: AW: Vergleich zweier Daten und Ausgabe in Msgbox von: Beni
Geschrieben am: 08.02.2005 11:27:02

Hallo Tom,
Gruss Beni


Sub Tom()
With Sheets("Tabelle1")
For i = 1 To .Cells(Rows.Count, 1).End(xlUp).Row
Zahl = .Cells(i, 1)
Set c = Sheets("Tabelle2").Columns(6).Find(What:=Zahl, LookIn:=xlValues, LookAt:=xlWhole)
If c Is Nothing Then MsgBox Zahl & " wurde nicht berücksichtig"
Next i
End With
End Sub



Bild


Betrifft: AW: Vergleich zweier Daten und Ausgabe in Msgbox von: Heiko S.
Geschrieben am: 08.02.2005 11:36:06

Hallo Tom,

versuche es mal mit diesem Code,

Sub Vergleich()
Dim i As Integer, n As Integer, ArrayCounter As Integer
Dim vorhanden As Boolean: vorhanden = False
Dim MyArray()
Dim AusgabeText As String
ArrayCounter = 0
Sheets("Tabelle1").Activate
For i = 1 To Sheets("Tabelle1").Cells(Rows.Count, 9).End(xlUp).Row
    For n = 1 To Sheets("Tabelle2").Cells(Rows.Count, 6).End(xlUp).Row
        If Sheets("Tabelle1").Cells(i, 9).Value = Sheets("Tabelle2").Cells(n, 6).Value Then
            vorhanden = True
            Exit For
        End If
    Next n
    If vorhanden = False Then
        ReDim Preserve MyArray(ArrayCounter)
        MyArray(ArrayCounter) = Sheets("Tabelle1").Cells(i, 9).Value
        ArrayCounter = ArrayCounter + 1
    End If
    vorhanden = False
Next i
If ArrayCounter <> 0 Then
    For i = ArrayCounter - 1 To 0 Step -1
        AusgabeText = CStr(MyArray(i)) & ",  " & AusgabeText
    Next i
    MsgBox "Die Zahlen  " & AusgabeText & " wurden nicht berücksichtigt!"
Else
    MsgBox " Es wurden alle Zahlen berücksichtigt!"
End If
End Sub


Gruß Heiko

PS: Das Forum lebt auch von den Rückmeldungen der Frager!


Bild


Betrifft: AW: Vergleich zweier Daten und Ausgabe in Msgbox von: Tom
Geschrieben am: 09.02.2005 17:50:16

Hallo Beni, Hallo Heiko S.,

erstmal vielen Dank für eure Bemühungen. Ich bin erst heute dazu gekommen die Makros auszuprobieren. Das von Beni hat bei mir leider nicht geklappt. Aber das von Heiko S. funktioniert wunderbar. Ich werd es schonmal benutzen und dann auch versuchen zu verstehen.

Eine weitere Frage...
Wenn in nur einer Tabelle leere Zellen vorkommen, dann erscheint in der Messagebox:" Die Zahlen , 1, , , 6, wurden nicht berücksichtigt!"
Kann man das elegant unterdrücken, dass die Leerzeichen, ausgegeben werden?

Viele Grüße TOM


Bild


Betrifft: AW: Vergleich zweier Daten und Ausgabe in Msgbox von: Heiko S.
Geschrieben am: 09.02.2005 20:28:23

Hallo Tom,

so sollte es auch mit leeren Zellen gehen.

Sub Vergleich()
Dim i As Integer, n As Integer, ArrayCounter As Integer
Dim vorhanden As Boolean: vorhanden = False
Dim MyArray()
Dim AusgabeText As String
ArrayCounter = 0
Sheets("Tabelle1").Activate
For i = 1 To Sheets("Tabelle1").Cells(Rows.Count, 9).End(xlUp).Row
    For n = 1 To Sheets("Tabelle2").Cells(Rows.Count, 6).End(xlUp).Row
        If Sheets("Tabelle1").Cells(i, 9).Value = Sheets("Tabelle2").Cells(n, 6).Value Then
            vorhanden = True
            Exit For
        End If
    Next n
    If vorhanden = False And Sheets("Tabelle1").Cells(i, 9).Value <> "" Then
        ReDim Preserve MyArray(ArrayCounter)
        MyArray(ArrayCounter) = Sheets("Tabelle1").Cells(i, 9).Value
        ArrayCounter = ArrayCounter + 1
    End If
    vorhanden = False
Next i
If ArrayCounter <> 0 Then
    For i = ArrayCounter - 1 To 0 Step -1
        AusgabeText = CStr(MyArray(i)) & ",  " & AusgabeText
    Next i
    MsgBox "Die Zahlen  " & AusgabeText & " wurden nicht berücksichtigt!"
Else
    MsgBox " Es wurden alle Zahlen berücksichtigt!"
End If
End Sub


Gruß Heiko

PS: Rückmeldung wäre nett !


Bild


Betrifft: AW: Vergleich zweier Daten und Ausgabe in Msgbox von: Tom
Geschrieben am: 10.02.2005 10:56:42

Hallo Heiko!

Jetzt klappt es genau so wie ich es brauchte!! Echt vielen Dank. Ich habe den Code schonmal genauer angeschaut... Alleine wär ich da nie drauf gekommen, da ich einige Befehle leider noch nicht kenne.

Also nochmal Danke und beste Grüße

Tom


 Bild

Beiträge aus den Excel-Beispielen zum Thema "Vergleich zweier Daten und Ausgabe in Msgbox"