Следующая формула работает хорошо, если я определяю каждую ячейку (снова и снова), но мне нужен цикл, который будет работать по столбцу A & B для сотен строк. Я пытался и просто не могу написать цикл, который запускается и останавливается, когда он попадает в пустую ячейку внизу. Это должно быть в состоянии работать с несколькими таблицами с разными именами вкладок.

Пример того, что работает сейчас: [Я хочу иметь одну формулу, которая зацикливается] В настоящее время я выписал это на 100 строк, так как я не могу заставить цикл работать. :-(

Sub Hidelines()

If Range("A1").Value = "No" Then
    Rows("1:1").EntireRow.Hidden = True
ElseIf Range("B1").Value = "NEVER" Then
    Rows("1:1").EntireRow.Hidden = True
    End If

If Range("A2").Value = "No" Then
    Rows("2:2").EntireRow.Hidden = True
ElseIf Range("B2").Value = "NEVER" Then
    Rows("2:2").EntireRow.Hidden = True
    End If

If Range("A3").Value = "No" Then
Range("E3").Select
    Rows("3:3").EntireRow.Hidden = True
ElseIf Range("B3").Value = "NEVER" Then
    Rows("3:3").EntireRow.Hidden = True
    End If

End Sub

1 ответ1

1
Sub HideRows()
Dim RowCount: RowCount = 1   ' Row you wish to start from
Dim ColIndex: ColIndex = 1   ' Column to look within (A = 1) - Never will be in ColIndex + 1

Do
    If (LCase(Cells(RowCount, ColIndex).Value) = "no") Then
        Cells(RowCount, ColIndex).EntireRow.Hidden = True
    ElseIf (LCase(Cells(RowCount, ColIndex + 1).Value) = "never") Then
        Cells(RowCount, ColIndex).EntireRow.Hidden = True
    End If
    RowCount = RowCount + 1
Loop Until IsEmpty(Cells(RowCount, ColIndex).Value)

End Sub

Это будет идти вниз по каждой строке, пока не достигнет пустой ячейки в столбце ColIndex . Он будет нечувствителен к регистру, просматривая один и тот же столбец для « No или один столбец справа от него для « Never , и в этом случае скрывает строку.

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