Я новичок здесь.Сравнить Ячейка с ячейкой выше VBA Excel
Я пытаюсь построить быструю программу VBA, чтобы «сгладить» Билль материалов по иерархии (BOM Level) и Status.
Вот некоторые примерные данные:
Данные примера показывает BOM с автомобилем в качестве верхнего уровня сборки, колеса и двигателя, как сборки второго уровня, а также различных детских части, которые составляют эти узлы на третьего и четвертого уровня спецификации.
Я хочу удалить любые строки, которые имеют значение «ZE
», «ZM
», или пробел в столбце C
.
Я также хочу удалить любые строки, которые имеют значение «ZA», а также прямые дочерние элементы другого «ZA
». (Пример - Удалить строку Rim из спецификации, потому что колеса является Родитель «ZA
» пункт)
Вот то, что я до сих пор:
Sub deletechildren()
Dim lr As Long, i As Long, k As Long
lr = Cells(Rows.Count, 1).End(xlUp).Row
For i = lr To 1 Step -1
If i > 2 Then
k = i - 1
End If
If Cells(i, 3).Value = "ZA" And Cells(i, 1).Value = Cells(k, 1).Value Then
Cells(i, 3).EntireRow.Delete
ElseIf Cells(i, 3).Value = "ZE" Then
Cells(i, 3).EntireRow.Delete
ElseIf Cells(i, 3).Value = "ZM" Then
Cells(i, 3).EntireRow.Delete
ElseIf Cells(i, 3).Value = "" Then
Cells(i, 3).EntireRow.Delete
End If
Next i
lr = Cells(Rows.Count, 1).End(xlUp).Row
End Sub
Я получаю ошибку на первой части оператор If, где я хочу разобрать все дочерние статусы «ZA
» из родителя «ZA
».
Любые идеи?
Что такое значение 'k', когда цикл первых хитов, что если заявление? –
Извините, первый оператор If был чем-то, с чем я играл. Реально, «k» всегда должно быть «i-1». Я пытался использовать «k» в качестве идентификатора строки непосредственно над текущей оценкой «i». –
Что я получаю, так это то, что 'k', возможно, не было инициализировано до этой итерации цикла. Вы уверены, что значение k имеет значение в первый раз, когда оно попадает в оператор 'If'? –