Anzeige
Archiv - Navigation
1892to1896
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Abgleichen von Preisen

Abgleichen von Preisen
10.08.2022 13:45:27
Preisen
Hallo liebes Excel Forum,
vielleicht kann mir jemanden Helfen... Aufgrund der aktuellen Situation möchte ich gern Preise von Produkten mir im Verlauf einmal ansehen und bräuchte dafür einen geeigneten VBA-Code!
Ich weiß auch, das es da diverse Seiten im Internet gibt, jedoch möchte ich mir selbst eine Datei erstellen!
Ich habe alles in der Test Arbeitsmappe beschrieben und hoffe auch das jemand versteht was ich da geschrieben habe!
Mfg Steffchen
https://www.herber.de/bbs/user/154584.xlsx

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Abgleichen von Preisen
10.08.2022 14:48:47
Preisen
Hallo Steffchen,
da die Verabeitung nur das Handeln von Daten betrifft, eignet sich Power Query besser als VBA.
Die Vorgehensweise Schritt für Schritt:
_ markiere den Datenbereich. In der Beispielmappe A2:D4
_ Menü "Einfügen, "Tabelle", hat keinen Überschirft
_ es fügt sich eine neue Kopfzeile mit "Spalte1", "Spalte2" usw.
_ "Spalte1" in "Produkte" umschreiben
_ auf einer Zelle dieser aktiven Tabelle gehen,
_ Menü "Daten", "Aus Tabelle"
_ Du bist im Power Query Editor
_ Markiere die Spalte "Produkte" (im Kopfbereich der Spalte Produkte klicken)
_ im Menü "Transformieren", "Spalten entpivotieren", "Andere Spalten entpivotieren" (schon wg. diese Funktion sollte man PQ kennen!)
_ Du hast jetzt 3 Spalten: "Produkte", "Attribut" und "Wert"
_ die Spalte "Attribut" entfernen (Rechtsklick im Kopfbereich),
_ Siehe wie die Schritte in dem rechten Bereich dazukommen. Du kannst jederzeit eine davon klicken, um den Stand nach dieser Schritte ansehen.
_ Spalte "Wert" markieren, Rechtsklick, "Spalte teilen", "nach Trennezichen teilen" oder im Menü "Trasnformieren", gleiche Aktion,
_ Benutzerdefinierte Trennzeichen "|" eingeben, fertig
_ Deine information sind jetzt in 3 Spalten,
_ es ist dabei 2 Bearbeitungsschritt entstanden. In der letzte "Geänderter Typ", andere die Spaltennamen und setzt beim ersten Spalte den Typ "type number" in "type date" um,
_ Die Spalte mit Uhrzeit entfernen,
_ Nur noch Menü "Datei", "Schliessen & Laden".
Fertig.
Die Liste lässt sich beliebig sortieren & filtern.
Kommt eine neue Wert in der Quelltabelle, so ergänzt sich die aktive Tabelle nach unten automatisch. Nach Rechts auch.
Das Ergebnis lässt sich mit Rechtsklick "Aktualisieren".
Viel Erfolg
VG
Yal
Anzeige
AW: Abgleichen von Preisen
10.08.2022 15:07:03
Preisen
Hallo Yal,
Ok vielen Dank erstmal für die ausführliche Anleitung.
Ich würde das morgen einmal ausprobieren wollen...
Gebe es trotzdem eine "relativ" einfache VBA Lösung?
Mit der Power Query habe ich mich noch nicht all zu viel beschäftigt...
Mfg
Steffchen
AW: Abgleichen von Preisen
10.08.2022 16:31:32
Preisen
Hallo
du musst auf beiden Blättern auf exakte Darstellung achten
- das € immer mit Leerzeichen hinter der Zahl
- vor und nach dem | auch ein Leerzeichen
In ein normales Modul

Option Explicit
Sub Preis()
Dim TB1 As Worksheet, TB2 As Worksheet, LR As Integer, i As Integer
Dim Arr, Prod As String, Datum As Date, Zeit As String, Preis As String
Dim Z1 As Integer, LC As Integer, Zeile As Integer
Set TB1 = Sheets("Tabelle1")
Set TB2 = Sheets("Tabelle2")
Z1 = 3 ' erste Zeile mit Daten Tab2
With TB2
LR = .Cells(.Rows.Count, "A").End(xlUp).Row 'letzte Zeile der Spalte
For i = Z1 To LR
Prod = .Cells(i, 1)
Preis = .Cells(i, 2).Text
Datum = .Cells(1, 3)
Zeit = Format(Now, "hh:mm")
If WorksheetFunction.CountIf(TB1.Columns(1), Prod) > 0 Then 'besteht schon
'in welcher Zeile
Zeile = WorksheetFunction.Match(Prod, TB1.Columns(1), 1)
'Vergleich mit letzter Spalte
LC = TB1.Cells(Zeile, TB1.Columns.Count).End(xlToLeft).Column
Arr = Split(TB1.Cells(Zeile, LC), " | ")
'Vergleiche Preise
If Arr(2)  Preis Then
'in neue Spalte
TB1.Cells(Zeile, LC + 1) = Datum & " | " & Zeit & " | " & Preis
Else
'ist gleich also nichts machen
End If
Else 'ist neu
Zeile = TB1.Cells(.Rows.Count, "A").End(xlUp).Row + 1 'Neue Zeile
TB1.Cells(Zeile, 1) = Prod
TB1.Cells(Zeile, 2) = Datum & " | " & Zeit & " | " & Preis
End If
Next
End With
End Sub
LG UweD
Anzeige
AW: Abgleichen von Preisen
11.08.2022 07:29:33
Preisen
Hallo Uwe,
das werde ich ausprobieren... Danke für die schnellen Antworten!
Gruß Steffchen
AW: Abgleichen von Preisen
11.08.2022 11:01:15
Preisen
Hallo Uwe,
also ich habe den Code ausprobiert, nur leider schiebt es immer die Preise von allen Produkten in eines der Produkte!
Kannst du dir das vielleicht noch einmal ansehen?
Vielen Dank im Voraus.
Gruß Steffchen
AW: Abgleichen von Preisen
11.08.2022 11:39:15
Preisen
Hallo
&GT&GT nur leider schiebt es immer die Preise von allen Produkten in eines der Produkte!
Bei mir (mit deiner Musterdatei) nicht; da klappt das.
Vorher:
 ABCD
2Produkt 110.08.2022 | 10:00 | 3,59€  
3Produkt 209.08.2022 | 09:00 | 3,50€10.08.2022 | 08:00 | 3,79€ 
4Produkt 308.08.2022 | 07:53 | 25,98€09.08.2022 | 15:32 | 27,49€10.08.2022 | 19:45 | 26,99€

 ABC
1Neu Preise Eingang 11.08.2022
2   
3Produkt 45,49 € 
4Produkt 510,99 € 
5Produkt 14,49 € 
6Produkt 23,69 € 
7Produkt 326,99 € 

Nachher:
 ABCD
2Produkt 110.08.2022 | 10:00 | 3,59€11.08.2022 | 11:29 | 4,49€ 
3Produkt 209.08.2022 | 09:00 | 3,50€10.08.2022 | 08:00 | 3,79€11.08.2022 | 11:29 | 3,69€
4Produkt 308.08.2022 | 07:53 | 25,98€09.08.2022 | 15:32 | 27,49€10.08.2022 | 19:45 | 26,99€
5Produkt 411.08.2022 | 11:29 | 5,49€  
6Produkt 511.08.2022 | 11:29 | 10,99€  

Das mit den Leerzeichen bei € hab ich noch eliminiert

Sub Preis()
Dim TB1 As Worksheet, TB2 As Worksheet, LR As Integer, i As Integer
Dim Arr, Prod As String, Datum As Date, Zeit As String, Preis As String
Dim Z1 As Integer, LC As Integer, Zeile As Integer
Set TB1 = Sheets("Tabelle1")
Set TB2 = Sheets("Tabelle2")
Z1 = 3 ' erste Zeile mit Daten Tab2
With TB2
LR = .Cells(.Rows.Count, "A").End(xlUp).Row 'letzte Zeile der Spalte
For i = Z1 To LR
Prod = .Cells(i, 1)
Preis = Replace(.Cells(i, 2).Text, " ", "")
Datum = .Cells(1, 3)
Zeit = Format(Now, "hh:mm")
If WorksheetFunction.CountIf(TB1.Columns(1), Prod) > 0 Then 'besteht schon
'in welcher Zeile
Zeile = WorksheetFunction.Match(Prod, TB1.Columns(1), 1)
'Vergleich mit letzter Spalte
LC = TB1.Cells(Zeile, TB1.Columns.Count).End(xlToLeft).Column
Arr = Split(TB1.Cells(Zeile, LC), " | ")
'Vergleiche Preise
If Replace(Arr(2), " ", "")  Preis Then
'in neue Spalte
TB1.Cells(Zeile, LC + 1) = Datum & " | " & Zeit & " | " & Preis
Else
'ist gleich also nichts machen
End If
Else 'ist neu
Zeile = TB1.Cells(.Rows.Count, "A").End(xlUp).Row + 1 'Neue Zeile
TB1.Cells(Zeile, 1) = Prod
TB1.Cells(Zeile, 2) = Datum & " | " & Zeit & " | " & Preis
End If
Next
End With
End Sub

Anzeige
AW: Abgleichen von Preisen
11.08.2022 12:41:23
Preisen
Hallo Uwe,
also es funktioniert soweit bis man etwas ändert. Entweder es werden alle Preise in ein Produkt geschoben oder es kommt es Fehlermeldung!
Vielleicht könnte ich auch damit leben wenn alles in einer einzelnen Spalte stehen würde (Quasi Produkt, Datum, Uhrzeit, Preis) oder eine andere Formatierung (ohne " | " zum Beispiel).
Wenn das aber zu kompliziert werden sollte dann lass ich mir für das Projekt etwas anderes einfallen!
Gruß Steffchen
AW: Abgleichen von Preisen
12.08.2022 08:20:10
Preisen
Hallo
ich versteh nur Bahnhof
- Wo änderst du was?
- Welche Fehlermeldung
- kann ich nicht nachvollziehen
LG UweD
Anzeige
VBA vs. Power Query
10.08.2022 22:34:59
Yal
Hallo Steffchen,
es gibt mehr oder weniger immer eine VBA-Lösung. Diesmal hat Uwe geliefert!
Man kann eine Flasche mit dem Feuerzeug öffnen. Wenn aber ein Fläschenöffner vorhanden ist, öffnen nur "junge Leute" die Flasche trotzdem mit dem Feuerzeug ;-)
VG
Yal
AW: VBA vs. Power Query
11.08.2022 07:28:29
Steffchen
Guten Morgen Yal,
ich werde natürlich auch deine Lösung einmal ausprobieren. Das heißt nicht das ich versteift bin auf VBA!
Danke trotzdem erstmal... Ich werde mich dazu melden
AW: VBA vs. Power Query
11.08.2022 10:59:27
Steffchen
Hallo Yal,
also ich habe jetzt ein wenig rum probiert, nur leider schaffe ich es nicht mit deiner Anleitung.
Irgendwie fehlt mir der Bezug zur Quelle, das heißt an dem Punkt wo sich die Preise in dem Fall ändern!?
Kannst du mir das in der Datei etwa einmal abspeichern?
Danke & Gruß
Steffchen
Anzeige
AW: VBA vs. Power Query
11.08.2022 16:28:45
Yal
Hallo Steffen,
der Bezug wird erzeugt, in dem eine aktive Tabelle instanziert wird:
Userbild
Was danach so aussieht:
Userbild
Diese aktive Tabelle ergänzt sich selbständig nach rechts und nach unten (einfach auf eine Dummy-Tabelle probieren).
Um den Bezug zwischen Tabelle und Power Query zu herstellen, muss eine Zelle innerhalb diese aktive Tabelle gerade aktiviert sein (steht auch in der Anleitung).
Nur eins habe ich übersehen: sollte deine Tabelle sich spaltenweise ergänzen, musst Du bei der Herstellung der PQ-Abfrage einen Schirtt löschen:
Beim Aufbau kommen 2 Schirtte: "Quelle" und "Geänderter Typ".
Diese "Geänderter Typ" basiert auf die originale Anzahl an Spalten. Diese Schritt löschen. So bleibt die PQ-Abfrage allgemein gültig, auch wenn der Anzahl an Spalten wächst.
VG
Yal
VG
Yal
Anzeige
AW: Abgleichen von Preisen
12.08.2022 11:00:46
Preisen
Anbei eine Datei, hab es ein wenig beschrieben was passiert wenn man den Code mehrmals ausführt!
Zur Fehlermeldung... Ich probiere noch einmal aus, hab mir das jetzt nicht gemerkt!
https://www.herber.de/bbs/user/154613.xlsx
AW: Abgleichen von Preisen
12.08.2022 11:25:21
Preisen
Hallo
Hab den Fehler gefunden
ändere hier von 1 auf 0
Zeile = WorksheetFunction.Match(Prod, TB1.Columns(1), 0)
LG UweD
AW: Abgleichen von Preisen
17.08.2022 08:54:27
Preisen
Hallo Uwe,
sorry das ich so lange auf eine Antwort habe warten lassen. Der Code funktioniert einwandfrei...
Nur ein kleines Problemchen habe ich noch... Es kommt ja nach dem Code die Fehlermeldung "die Match-Eigenschaft der Worksheetfunktion-Objekt nicht zugeordnet werden kann". Ich umgehe die mit On Error Resume Next, nur haut es mir da im letzten Produkt immer wieder Daten rein, die da nicht hin gehören! Also so wie schon einmal beschrieben, das die Zeilen voll geschrieben werden ohne Sinn!?
Kannst du mir das bitte noch lösen, also die Fehlermeldung umgehen ohne unerwünschte Daten? Danach wäre ich Wunschlos glücklich ;)
Gruß Steffchen
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige