у меня есть следующий код:
Sub CopyTest()
Dim skuRow As Integer
Dim curSku As String
Dim numSkus As Integer
Dim impType As String
Dim copyRows As Integer
Dim supAcc As String
Dim arr_TotalList As Variant
Dim locs As String
Dim colorMax As String
With ActiveSheet
copyRows = 3
impType = "-LE"
supAcc = ""
numSkus = Sheets(2).Cells(Sheets(2).Rows.Count, "A").End(xlUp).Row
skuRow = 1
Rows("1:" & copyRows).Copy
For i = copyRows + 1 To (copyRows * numSkus) + 1 Step copyRows
arr_TotalList = Split(CurVal, "|")
colorMax = Sheets(2).Range("C" & skuRow).Value
If colorMax = "" Then
colorMax = "4"
End If
curSku = Sheets(2).Range("A" & skuRow).Value
locs = Sheets(2).Range("B" & skuRow).Value
arr_TotalList = Split(locs, "|")
Range("A" & i).Select
ActiveSheet.Paste
For n = 0 To copyRows - 1 Step 1
If n = 0 Then
Range("B" & i + n) = supAcc & curSku & impType
Range("E" & i + n) = colorMax
Else
Range("G" & i + n) = arr_TotalList(n - 1)
Range("B" & i + n) = supAcc & curSku & impType
End If
Next n
skuRow = skuRow + 1
Next i
End With
End Sub
этот код в основном использует шаблон данных в листе 1 и копирует этот шаблон и реализует данные из листа 2 Сколько раз установлено в "copyRows"
прямо сейчас мне пришлось бы настраивать шаблон на листе 1 каждый раз, когда я изменяю номер "copyRows". Например, если copyRows равен 4, в листе 1 шаблон будет содержать 4 строки предопределенного материала, первая строка обязательна, следующие строки основаны на "|" разделитель значений в данных листа 2. Например, столбец B листа 2 содержит такие данные, как"Test1|Test2|Test3"
Я пытаюсь автоматизировать этот код немного дальше, поэтому мне не нужно вручную изменять copyRows и добавлять или удалять дополнительные строки на листе шаблона. На листе шаблона я хочу иметь только две строки, первая требуется, вторая будет основана на количестве значений разделителей"|".
Я думаю добавить формулу подсчета для copyRows, для пример,=LEN(Sheets(2).B:B)-LEN(SUBSTITUTE(Sheets(2).B:B,"|",""))
и затем добавляем 1. Как бы я положил в формулу для copyRows?