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ę :-)
microsoft-excel
Satpaul
źródło
źródło
Odpowiedzi:
W przypadku danych w kolumnach A i B uruchomienie tego krótkiego makra da pożądany wynik w kolumnach od C do E.
źródło
Twoje pytanie składa się z dwóch części.
To jest odpowiedź na drugą część pytania.
Jak liczyć i aktualizować liczbę wyświetleń
PRODx
.Zaimplementowałem Twoje wymagania za pomocą formuł (ale możesz spróbować swoich sił z VBA)
Wzór jest następujący
=COUNTIF($A$2:A2,A2)
. Wprowadź formułę dla pierwszego wiersza i po prostu przeciągnij wzdłuż długości danych, a będziesz w stanie uzyskać liczbęPRODx
źródło