zwei tabellen vergleichen
Hallo Ich habe folgendes Problem.
Ich habe zwei Tabellen in der einen steht in jeder Zeile ein Datensatz aus Datum Rechnungsnummer Kundennummer und Betrag (jedes in einer eigenen Zelle) in der anderen Tabelle habe ich eine Zeile in der Verwendungszweck, und Betrag stehen. Ich wurde nun gerne von einem Makro überprüfen lassen ob es übereinstimmungen gibt zwischen Tabelle 1 und 2.
Mein Problem ist dass in der Zelle Verwendungszweck mehrer Attribute wie Kundennummer, Rechnungsnummer stehen können.
Ich stelle mir das Makro wie folgt vor:
Tabelle 1
KdNr | RGNR | Betrag |
20001 | 2 | 21,25|
Tabelle 2
Verwendungszweck | Betrag|
20001 RG2| 21,25| 3 Übereinstimmungen
2 | 21,25 | 2 Übereinstimmungen
KD20001 | 21,25 | 2 Übereinstimmungen
2 KDNR 20001| 1002,21 | 2 Übereinstimmugen
Ntürlich wenn ein wert nur einmal in einer Zeile von Tabelle 2 vorkommt 1 Übereinstimmung.
Ich hoffe ihr habt meine konfusen Gedanken verstanden. Vielen Dank für die Hilfe schon mal im voraus.
Antwort schreiben
Antwort 1 von nighty vom 01.05.2019, 20:40 Options
hi freysein :-)
probier das mal,nur kurz getestet :-)
gruss nighty
Option Explicit
Sub vergleich()
Dim w3x As Integer
Dim w3y As Long
Dim zaehler0 As Long
Dim zaehler1 As Integer
Dim zaehler2 As Integer
Dim suche1 As Range
Dim suche2 As Range
w3y = Workbooks(1).Sheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row
w3x = 3
ReDim excel1(w3y, w3x) As Variant
Sheets(1).Select
excel1() = Range(Cells(1, 1), Cells(w3y, w3x))
For zaehler0 = 2 To w3y
Set suche1 = Sheets(2).Range("A1:A" & w3y).Find(excel1(zaehler0, 1), Lookat:=xlPart)
If Not suche1 Is Nothing Then
For zaehler1 = 1 To w3x
Set suche2 = Sheets(2).Range("A" & suche1.Row & ":C" & suche1.Row).Find(excel1(zaehler0, zaehler1), Lookat:=xlPart)
If Not suche2 Is Nothing Then
zaehler2 = zaehler2 + 1
End If
Next zaehler1
End If
If Not suche1 Is Nothing Then Sheets(2).Cells(suche1.Row, 4) = zaehler2
zaehler2 = 0
Next zaehler0
End Sub
Antwort 2 von nighty vom 02.05.2019, 10:47 Options
hi freysein :-)
ups :-)
korrigiert,so müsste es funktionieren :-)))
gruss nighty
Option Explicit
Sub vergleich()
Dim w3x As Integer
Dim w3y As Long
Dim zaehler0 As Long
Dim zaehler1 As Integer
Dim zaehler2 As Integer
Dim suche1 As Range
Dim suche2 As Range
w3y = Workbooks(1).Sheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row
w3x = 3
ReDim Excel1(w3y, w3x) As Variant
Sheets(1).Select
Excel1() = Range(Cells(1, 1), Cells(w3y, w3x))
For zaehler0 = 2 To w3y
Set suche1 = Sheets(2).Range("A1:A" & w3y).Find(Excel1(zaehler0, 1), Lookat:=xlPart)
If Not suche1 Is Nothing Then
For zaehler1 = 1 To w3x
Set suche2 = Sheets(2).Range("A" & suche1.Row & ":C" & suche1.Row).Find(Excel1(zaehler0, zaehler1), Lookat:=xlPart)
If Not suche2 Is Nothing Then
If Sheets(2).Cells(suche1.Row, zaehler1) <> Excel1(suche2.Row, zaehler1) Then
zaehler2 = zaehler2 + 1
End If
Else
zaehler2 = zaehler2 + 1
End If
Next zaehler1
End If
If Not suche1 Is Nothing Then Sheets(2).Cells(suche1.Row, 4) = zaehler2
zaehler2 = 0
Next zaehler0
End Sub
Antwort 3 von freysein vom 03.05.2019, 12:52 Options
Dumme frage aber wie wende ich das script an? ;-)
Antwort 4 von nighty vom 03.05.2019, 12:59 Options
hi freysein :-)
tabell1 wird mit tabelle2 verglichen,ausgehend von 3 spalten,es wird die anzahl der unstimmigkeiten in tabelle2 spalte 4 dargestellt
gruss nighty
einzufuegen
alt + f11 öffnet den projektexplorer
einfuegen/modul
da dann einfuegen
f5 ist fuer start
alternativ
extras/makro/makros
makro anwaehlen/optionen/taste zuweisen
Antwort 5 von freysein vom 03.05.2019, 16:43 Options
Vielen Dank nightly,
aber bei mir tut sich nix, er springt zwar in tabellenblatt "Tabelle1" wenn ich mich in der "Tabelle2" befinde aber schreibt mir keine übereinstimmungen in die 4. Spalte, liegt es vielleicht daran dass ich Excel 2007 benutze?
Antwort 6 von nighty vom 04.05.2019, 09:02 Options
hi freysein :-)
möglich,mit office2007 kenne ich mich nicht aus,das makro ist mit excel2003 entwickelt und geprüft worden,dann kann ich leider nicht weiterhelfen
gruss nighty