У меня довольно простой For loop
, который смотрит на 2 столбца - ИМЯ и РАБОТА. Если в ячейке есть имена, разделенные запятыми, запускается функция, которая вставляет каждое имя на одну строку ниже, а затем берет количество новых строк и добавляет его к значению последней строки (минус 1). Затем, если рядом с этим именем нет JOB, используется значение JOB +1 выше.
Проблема, с которой я сталкиваюсь, заключается в том, что, хотя я вижу, что значение LastRow
добавляется при прохождении, цикл по-прежнему завершается после достижения исходного значения LastRow
в начале цикла.
т.е. если LR = 100 в начале цикла, но из-за CountUnique, LR сейчас = 115, цикл все равно завершается после 100.
Я не могу понять, почему.
LR = Range("B" & Rows.Count).End(xlUp).Row
' Mirror missing attributes
For i = 2 To LR
If InStr(Cells(i, 2).Value, ",") Then
LR = LR + CountUnique(Cells(i, 2)) - 1
End If
If Cells(i, 1).Value = "" Then
Cells(i, 1).Value = Cells(i - 1, 1).Value
End If
Next i
Public Function CountUnique(r As Range) As Integer
Dim c As Collection
Set c = New Collection
ary = Split(r.Text, ",")
On Error Resume Next
For Each a In ary
c.Add a, CStr(a)
If Err.Number = 0 Then
If CountUnique >= 1 Then
r.Offset(CountUnique, 0).EntireRow.Insert
r.Offset(CountUnique, 0).Value = Trim(a)
End If
CountUnique = CountUnique + 1
Else
Err.Number = 0
End If
Next a
r.Value = c.Item(1)
End Function