Я работаю над шаблоном листа Excel, используемым для системы SAP, и у меня есть 2 столбца, как показано ниже:
Column C Column E
Level Element Code
3 ABCD.01.01.01
4 ABCD.01.01.01.01
4 ABCD.01.01.01.02
4 ABCD.01.01.01.03
3 ABCD.01.01.02
4 ABCD.01.01.02.01 'I Want to Restart Numbering Here
4 ABCD.01.01.02.02
4 ABCD.01.01.02.03
Мне удалось на уровне 3 автоматизировать весь лист с помощью макроса, как показано ниже.
Sub AutoNumber3()
Dim Rng, C As Range
Dim Lrow As Long
Dim i As Integer
Lrow = Cells(Rows.Count, 1).End(xlUp).Row
Set Rng = Worksheets("Union").Range("C2:C" & Lrow)
i = 1
For Each C In Rng.Cells
If C.Value = 3 Then
For i = 1 To i Step 1
C.Offset(0, 2).Value = "ABCD.01.01." & i
Next i
End If
Next C
End Sub
и я использовал то же самое для уровня 4, как показано ниже
Sub AutoNumber4()
Dim Rng, C As Range
Dim Lrow As Long
Dim i As Integer
Lrow = Cells(Rows.Count, 1).End(xlUp).Row
Set Rng = Worksheets("Union").Range("C2:C" & Lrow)
i = 1
For Each C In Rng.Cells
If C.Value = 4 Then
For i = 1 To i Step 1
C.Offset(0, 2).Value = "ABCD.01.01.01" & i
Next i
End If
Next C
End sub
Я хочу перезапустить нумерацию уровня 4 с 1 каждый раз, когда значения ячеек в столбце уровня = 3, используя Do До следующего C.Value = 3, I = 1, но я не могу правильно поставить его в процедуре Autonumber4
Ваша помощь очень ценится, так как этот лист может достигать 50000 или 100000 строк, которые невозможно заполнить вручную.
С уважением
Мохеб Лабиб
rng
это Variant. Кроме того, вы объявляетеi=1
, а затем делаетеFor i=1 to i step 1
. Это не имеет смысла, если вы собираетесь сделать это только один раз, вам не нужен For...Next. Кроме того, вы пытались сделать это с помощью обычных формул Excel? Кроме того, будут ли все числа иметь 2 цифры? Вы говорите, что существует более 100 000 строк. Как будет представлена строка 95.000? - person Foxfire And Burns And Burns   schedule 07.08.2020