Mam następujący zestaw danych:
Col A Col B
Prod1 SKU-A, SKU-B
Prod2 SKU-C, SKU-D, SKU-E
Potrzebuję tego jako:
Col A Col B Col C
Prod1 SKU-A 1
Prod1 SKU-B 2
Prod2 SKU-C 1
Prod2 SKU-D 2
Prod2 SKU-E 3
Zasadniczo muszę podzielić wartości oddzielone przecinkami w kolumnie B na osobne wiersze, co myślę, że mogę to zrobić za pomocą różnych makr dostępnych na tej stronie, jednak muszę dodać (inną) kolumnę C, która przypisuje sekwencję numeryczną do każdego podzielonego wiersza dla każdy produkt podany w kolumnie A.
Mam nadzieję, że to ma sens!
EDYTUJ, aby dodać w VBA Używam:
Sub SliceNDice()
Dim objRegex As Object
Dim X
Dim Y
Dim lngRow As Long
Dim lngCnt As Long
Dim tempArr() As String
Dim strArr
Set objRegex = CreateObject("vbscript.regexp")
objRegex.Pattern = "^\s+(.+?)$"
'Define the range to be analysed
X = Range([a1], Cells(Rows.Count, "b").End(xlUp)).Value2
Redim Y(1 To 2, 1 To 1000)
For lngRow = 1 To UBound(X, 1)
'Split each string by ","
tempArr = Split(X(lngRow, 2), ",")
For Each strArr In tempArr
lngCnt = lngCnt + 1
'Add another 1000 records to resorted array every 1000 records
If lngCnt Mod 1000 = 0 Then Redim Preserve Y(1 To 2, 1 To lngCnt + 1000)
Y(1, lngCnt) = X(lngRow, 1)
Y(2, lngCnt) = objRegex.Replace(strArr, "$1")
Next
Next lngRow
'Dump the re-ordered range to columns C:D
[c1].Resize(lngCnt, 2).Value2 = Application.Transpose(Y)
End Sub
Daj mi znać, jeśli potrzebujesz innych szczegółów, z góry dziękuję :-)