Zeilen zusammenfassen
#1
Hallo allerseits,

ich habe eine .csv Datei (xml auch möglich) mit mehreren tausend Zeilen. Jede Zeile enthält ein Produkt. Genauer gesagt ein Kleidungsstück mit einer bestimmten Größe.

000005-102025_01350-L;13.77;EUR;
Dateiupload bitte im Forum! So geht es: Klick mich!

000005-102025_01350-M;13.77;EUR;
Dateiupload bitte im Forum! So geht es: Klick mich!

000005-102025_01350-S;13.77;EUR;
Dateiupload bitte im Forum! So geht es: Klick mich!

151219-103031_70061-L;17.97;EUR;
Dateiupload bitte im Forum! So geht es: Klick mich!

151219-103031_70061-M;17.97;EUR;
Dateiupload bitte im Forum! So geht es: Klick mich!

151219-103031_70061-M;17.97;EUR;
Dateiupload bitte im Forum! So geht es: Klick mich!

151219-103031_70061-S;17.97;EUR;
Dateiupload bitte im Forum! So geht es: Klick mich!

usw...

Wie man unschwer erkennen kann handelt es sich um 7 Zeilen, aber eigentlich nur um 2 Produkte. Ich muss diese Zeilen zusammenfassen zu nur zwei Zeilen mit den jeweiligen Größen. Der gemeinsame unique Nenner ist immer der Link für das Produktbild. So würde idealerweise die Datei aussehen (die Produktnummer benötige ich nicht):
13.77;EUR;
Dateiupload bitte im Forum! So geht es: Klick mich!

17.97;EUR;
Dateiupload bitte im Forum! So geht es: Klick mich!


Gibt es dafür eine Lösung? Die Datei besteht aus mehreren tausend Zeilen und ich müsste die jeden Tag verarbeiten.
Freue mich schon Feedback und schon mal Danke schön!
MrKing
Top
#2
Hallo MrKing,

stehen alle Daten einer Zeile in einer Zelle?
Top
#3
Das kann man beim Öffnen definieren. Wenn ich getrennt mit ";" wähle stehen die Daten getrennt. Wenn nicht, dann alle in einer Zelle.
Top
#4
Hallo Bürger,

der nachfolgende Code führt die Zusammenfassung aus und schreibt die Ergebnisse ins vba-Direktfenster. Alternativ kann man auch Zellen einer Arbeitsblattes angeben.

Wie im Beispiel müssen die Eingabewerte in einer Zelle der Spalte A stehen.


Code:
Sub MrKing()
lr = Cells(Rows.Count, "A").End(xlUp).Row
With CreateObject("scripting.dictionary")
For i = 1 To lr
Un = ""
Tx = Split(Cells(i, "A"), ";")
   For j = 1 To UBound(Tx) - 1
       Un = Un & Tx(j)
   Next j
   'Debug.Print Un
   If Not .exists(Un) Then
       .Add Un, "; " & Tx(UBound(Tx))
   Else
       .Item(Un) = .Item(Un) & "; " & Tx(UBound(Tx))
   End If
       
Next i
For Each k In .keys
Debug.Print k & .Item(k)
Next k
End With
End Sub

mfg
Top
#5
Danke Fennek.
Bei mir kommt leider nichts vernünftiges bei rum:
; MerchantProductNumber; 000005-102025_01350-L; 000005-102025_01350-M; 000005-102025_01350-S; 000005-102025_01350-XL; 000123-272032_01340-L; 000123-272032_01340-M; 000123-272032_01340-XL; 000123-272032_01340-XS; 151219-103031_70061-L; 151219-103031_70061-M; 151219-103031_70061-S; 151219-103031_70061-XL; 151219-103031_70061-XS; 151219-103031_90011-M; 151219-103031_90011-S; 151219-103031_90011-XL; 151219-103031_90011-XS; 153226-103031_90011-S; 153226-103031_90011-XS; 153228-103061_90011-L; 153228-103061_90011-M; 153228-103061_90011-S; 153228-103061_90011-XL; 153228-103061_90011-XS; 1541307505_0903-36; 1541307505_0903-37; 1541307505_0903-38; 1541307505_0903-39; 1541307505_0903-40; 1541307505_0903-41; 1541307505_1302-36; 1541307505_1302-37; 1541307505_1302-38; 1541307505_1302-39; 1541307505_1302-40; 1541307505_1302-41; 
usw...
Top
#6
Hallo,

die Ausgangsdaten müssen so in der Datei stehen wie im angehängten Beispiel:

Die Txt-Datei(en) müssen nach Excel importiert werden.

mfg


Angehängte Dateien
.xls   MrKing cle.xls (Größe: 24,5 KB / Downloads: 3)
Top
#7
Hallo,

was ist denn aus dem Code geworden? Hat er gepasst?

Ein feedback wäre nett.

mfg
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste