Ich möchte eine Formel erzeugen, die Preise der einen Tabelle mit den Preisen der zweiten vergleicht und ggf. mit den neuen Werten überschreibt. Hört sich einfach an? Es geht weiter; der gemeinsame Nenner beider Tabellen ist Produktcode. Nur, da die Schreibweise des Produktcodes in beiden Tabellen nicht immer identisch ist, ergibt sich vielleicht einen Haken. Also, in einfacher Computersprache möchte ich folgendes realisieren können: Produktcode Tabelle 1 mit Produktcode Tabelle 2 vergleichen; wenn diese identisch sind, Preis 1 mit Preis 2 vergleichen; wenn diese nicht identisch sind, Preis 1 durch Preis 2 ersetzen, ansonsten nichts ändern; wenn aber Produktcode 1 mit Produktcode 2 nicht identisch ist, soll die Tabellenzelle des Produktcode 1 mit irgendeiner Farbe gekennzeichnet werden. Fertig. Und dies für etwa 6000 Preise!
Hat jemanden bereits Erfahrung von so etwas? Ich kenne mich leider mit Excel zu wenig aus, deshalb die Hilfeschrei …
gemeinsame Nenner beider Tabellen ist Produktcode. Nur, da die
Schreibweise des Produktcodes in beiden Tabellen nicht immer
identisch ist, ergibt sich vielleicht einen Haken. Also, in
Hi Philip,
meine Glaskugel verrät mir nicht die unterschiedliche Schreibweise des Produktcodes.
Gruß
Reinhard
Das ist eher eine Aufgabe für Access oder dBase, also einer Datenbank mit Programmiersprache. Also aus Excel exportieren und in eine Datenbanksoftware deiner Wahl wieder einlesen. Dort erledigt das dann ein 10-Zeiler.
Gruß, multze
Hallo Philp,
dieser Vergleich geht nur per Makro. Hier die von mir verwendeten Beispiel-Tabellen und das Makro:
Tabellenblattname: Tabelle1
A B C D E
1 Code Preis Code fehlt
2 A1 5
3 A2 7
4 B1 7
5 B2 8 X
6 A24 5
7 A22 10
8 A3 7
9 A4 8
Tabellenblattname: Tabelle2
A B
1 Code Preis
2 A1 5
3 A2 7
4 B1 7
5 A24 5
6 A22 10
7 A3 7
8 A4 8
Sub TabellenVergleich()
Dim Code1 As Range, Code2 As Range, Code As Range, Zelle As Range
Dim wks1 As Worksheet, wks2 As Worksheet
Dim Preis1 As Integer, Preis2 As Integer
Dim Zeile1 As Integer, Zeile2 As Integer, Spalte1 As Integer, Spalte2 As Integer
Preis1 = 2 ' Spalte mit Preisen in Tabelle1
Zeile1 = 2 'Zeile ab der in Tabelle1 die Codes stehen
Spalte1 = 1 'Spalte in der die Codes in Tabelle1 stehen
SpalteX = 5 ' Spalte in Tabelle1, in der ein X eingetragen wird, wenn Code fehlt
Preis2 = 2 ' Spalte mit Preisen in Tabelle2
Zeile2 = 2 'Zeile ab der in Tabelle2 die Codes stehen
Spalte2 = 1 'Spalte in der die Codes in Tabelle2 stehen
' Bereich mit den Codes in Tabelle1
Set wks1 = ThisWorkbook.Sheets("Tabelle1")
With wks1
Set Code1 = .Range(.Cells(Zeile1, Spalte1), .Cells(.UsedRange.Rows.Count, Spalte1))
' vorhandene "X"-Einträge löschen
.Range(.Cells(Zeile1, SpalteX), .Cells(.UsedRange.Rows.Count, SpalteX)).ClearContents
End With
' Bereich mit den Codes in Tabelle2
Set wks2 = ThisWorkbook.Sheets("Tabelle2")
With wks2
Set Code2 = .Range(.Cells(Zeile2, Spalte2), .Cells(.UsedRange.Rows.Count, Spalte2))
End With
' vorhandene Farbcodierung in Tabelle1 entfernen
Code1.Interior.ColorIndex = xlColorIndexNone
' Codes vergleichen
For Each Code In Code1
Set Zelle = Code2.Find(Code.Value, , xlValue, xlWhole)
If Zelle Is Nothing Then
Code.Interior.ColorIndex = 6 'Farbcodierung (gelb) wenn Code in Tabelle2 fehlt
' Trägt ein X wenn Code in Tabelle2 Fehlt
wks1.Cells(Code.Row, SpalteX).Value = "X"
Else
' Eintragen des gefundenne Peises aus Tabelle2 in Tabelle1
wks1.Cells(Code.Row, Preis1).Value = wks2.Cells(Zelle.Row, Preis2).Value
End If
Next Code
End Sub
Das Makro kopierst du im VBA-Edtor (Anzeige mit +F11) in ein Modul (ggf. zunächst neues Modul für Datei einfügen).
Ich hoffe meine Erläuterungen reichen aus, damit du das Makro ggf. an den Aufbau deiner Datei anpassen kannst.
Außer der Farbmakierung, wenn Code nicht in Tabelle2 gefunden wird, wird in Spalte 5 zusätzlich ein „X“ eingetragen. So kann man in Tabelle1 die Codes ohne Preis in Tabelle2 schnell finden oder auch mit Autofilter selektieren.
Gruß
Franz
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]