Clever-Excel-Forum

Normale Version: Zelle mit mehreren Zahlen durchsuchen und sortieren
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo liebe Forenmitglieder,

ich wende mich mit einem Problem an euch, an dem ich seit einer Woche sitze und einfach nicht weiter komme bzw. keinen Ansatz finde, wie ich das Problem lösen könnte. Um mein Anliegen zu verdeutlichen habe ich ein entsprechendes Bild beigefügt.

[Bild: excel-hilfe.jpg]

Problemstellung:
Ich erhalte von unserem Produktlieferanten die Cross-Selling Informationen 8knapp 7000 Artikel) in der Form von den Spalten A (ArtNr.) und B (Art.Nrn der zu verlinkenden Produkte). Die Cross-Selling-Produkte sind alle in einer Zelle mit Komma getrennt. Doch um ein funktionierendes CS im Shop anbieten zu können, muss ich das in die Form von den Spalten C und D bringen. Heisst im Überblick:
  • jeder einzelne Cross-Selling-Artikel muss eindeutig einer Artikelnummer zugeordnet sein
  • Artikelnummern ohne Cross-Selling werden nicht angezeigt bzw. eingefügt
Könnt ihr mir da irgendwie helfen, da ich keine Idee habe, wie ich das in die Form bringen kann bzw. das jeder einzelne CS-Artikel zu der Artikelnummer kommt.

Vielen Dank schon einmal an dieser Stelle für das durchlesen und vielleicht weiß einer ja Rat.

Viele Grüße
Peer
Hallo,

mit vba sollte dies mit einem überschaubarem Aufwand möglich sein. Falls Interesse, schicke mir eine PN (Nachricht)

mfg
Hallo Peer,

ich versuche es mal öffentlich, damit auch andere Mitleser etwas davon haben:
Sub Umwandeln()
 Dim varQ As Variant, varT As Variant, varZ As Variant
 Dim i As Long, j As Long, k As Long
 
 varQ = Range("A1").CurrentRegion.Value
 ReDim varZ(1 To 2, 1 To 1)
 varZ(1, 1) = varQ(1, 1)
 varZ(2, 1) = varQ(1, 2)
 k = 1
 For i = 2 To UBound(varQ, 1)
   varT = Split(varQ(i, 2), ",")
   ReDim Preserve varZ(1 To 2, 1 To UBound(varZ, 2) + UBound(varT) + 1)
   For j = 0 To UBound(varT)
     k = k + 1
     varZ(1, k) = Trim(varQ(i, 1))
     varZ(2, k) = Trim(varT(j))
   Next j
 Next i
 varZ = Application.Transpose(varZ)
 
 Range("A1").CurrentRegion = ""
 Range("A1").Resize(UBound(varZ, 1), UBound(varZ, 2)).Value = varZ
End Sub
Gruß Uwe
Hallo Uwe,

damit rettest du mir echt die Woche. Das Skript funktioniert sensationell und genauso wie es soll. Smile
Vielen lieben Dank.

Ein schönes Wochenende und viele Grüße
Peer
Hallo noch einmal,

es hat sich beim Daten importieren herausgestellt, dass die Cross-Selling-Daten nicht 100% korrekt/ajtuell sind, die vom Lieferanten kommen, weil Artikelnummern in der Spalte B angegeben sind, die nicht mehr verfügbar sind. Lässt sich im Skript noch eine Abfrage einfügen, dass der nur die Zeile hinzufügt, wenn der Artikel auch nur in Spalte A verfügbar ist? Damit bleibt das ein in sich geschlossenes System.

Vielen Dank noch einmal für die Hilfe. Smile
Gruß Peer


PS: Ansonsten funktioniert das Skript 1a. Smile
Ich habe das nach der Sortierung des Skripts mit der unten stehenden Funktion und 2 Hilfsspalten gelöst. Danach dann Spalte E (Vorhanden) sortiert und alle "Nein" Einträge gelöscht und anschließend die 2 Hilfsspalten, um ein problemloses Importieren zu ermöglichen.


Ich habe mit der Formel überprüft, ob ein zugewiesenes Produkt (Spalte C) im kompletten Sortiment (Spalte F) enthalten ist. 
=WENN(ZÄHLENWENN($F$2:$F$6606;C2)>0;"Ja";"Nein")


[img=832x921]
Dateiupload bitte im Forum! So geht es: Klick mich!
]

Ich gebe zu, dass ist jetzt vielleicht die etwas umständliche Variante, hat aber erst einmal geholfen. Vielleicht lässt sich das VBS Skript ja noch entsprechend erweitern um die Funktion, dass nicht vorhandene Artikel im gesamt Sortiment nicht mit ausgegeben werden.

Vielen Dank noch einmal an Uwe für die tolle Unterstützung. Ohne dich wäre es nicht möglich gewesen.

Viele Grüße
Peer