Я новичок в VBA, поэтому я нахожу трудности в своей задаче.

У меня есть Excel с 2500 строк и три столбца A, B, C.
Мне нужно удалить всю строку, только если значение в столбце C пустое.
Я искал похожие вопросы, но они не относятся к моей задаче.

Я нашел этот код, но не сделал работу для моего случая:

Sub DeleteBlankRows1()

'Deletes the entire row within the selection if the ENTIRE row contains no data.

'We use Long in case they have over 32,767 rows selected.

Dim i As Long 

'We turn off calculation and screenupdating to speed up the macro.

With Application
    .Calculation = xlCalculationManual
    .ScreenUpdating = False

'We work backwards because we are deleting rows.

For i = Selection.Rows.Count To 1 Step -1
    If WorksheetFunction.CountA(Selection.Rows(i)) = 0 Then
        Selection.Rows(i).EntireRow.Delete
    End If
Next i

    .Calculation = xlCalculationAutomatic
    .ScreenUpdating = True
End With

End Sub

Я бы предпочел сделать это с VBA, хотя я должен делать это для 50 файлов Excel каждый день.

Есть идеи сделать это?

1 ответ1

2

Вы сделали комментарий, который просите о помощи

Я предполагаю, что последняя строка всегда 2500 в соответствии с вашим постом (если нет, этот пост показывает, как получить последний ряд )

Затем вы перебираете каждую строку, начиная с последней.

Если строка имеет значение в столбце C, ничего не делать. В противном случае удалите его.

Оповещение о спойлере: как это сделать С комментариями, чтобы объяснить, что он делает

Sub doIt()    
 Dim MyRange As Range
 Dim lngLastRow As Long    
    Set MyRange = Range("A:C") ' grab the range    
    lngLastRow = Cells(Rows.Count, MyRange.Column).End(xlUp).Row  ' grab the last value, swap it for 2500        
    Dim i As Integer        
    For i = lngLastRow To 1 Step -1 ' loop through, starting at the last column        
        If Range("C" & i).Value = "" Then ' test if there is not a value
            Rows(i).EntireRow.Delete   'delete!
        End If        
    Next i
End Sub

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .