Привет друзья, есть умная таблица (прайс-лист) примерно 500 строк и 20 колонок, вся она создана на основе данных других с др листов. Обновляю я ее протягиванием и выглядит примерно так:
SKU | ID | NAME | QTY | тд |
12323 | HJWW001,HJWW003 | text | 5 | text |
Задача в столбце B(2) она же ID при нахождении запятой, дублировать
строку соответственно количеству запятых, в колонке SKU менять на SKU + ID а в колонке B оставлять только один ID вот так:
SKU | ID | NAME | QTY | тд |
12323-HJWW001 | HJWW001 | text | 5 | text |
12323-HJWW003 | HJWW003 | text | 5 | text |
Я нашел код, который работает, но у него есть минусы, поэтому прошу помощи в доработке
1. самое главное он очень сильно тормозит
2. если в колонке ID если ошибка (#N/A и тд ) то он не может обработать и вылетает
Код |
---|
Sub ExpandRows()
Dim a As Variant, vals As Variant
Dim i As Long, rws As Long
Application.ScreenUpdating = False
With Range("A3:B" & Range("A" & Rows.Count).End(xlUp).Row)
a = .Columns(2).Value2
For i = UBound(a) To 1 Step -1
' vals = Split(Mid(a(i, 1), 2, Len(a(i, 1)) - 2), ",")
vals = Split(a(i, 1), ",")
rws = UBound(vals) + 1
If rws > 1 Then
.Rows(i + 1).Resize(rws - 1).Insert
.Rows(i).Copy Destination:=.Rows(i).Resize(rws)
End If
.Cells(i, 2).Resize(rws).Value = Application.Transpose(vals)
' .Cells(i, 13).Resize(rws).Value = Destination.Resize(UBound(vals, 2) + 1, UBound(vals, 1) + 1) = Application.Transpose(vals)
Next i
End With
Application.ScreenUpdating = True
End Sub
|
СПАСИБО