空白セルまで列を下方向にループします

空白セルまで列を下方向にループします

次の式はうまく機能しますもし各セルを(何度も)定義していますが、数百行にわたって列 A と列 B を実行するループが必要です。試してみましたが、一番下の空のセルに到達したときに実行して停止するループを記述することはできないようです。これは、異なるタブ名を持つ複数のスプレッドシートで実行できる必要があります。

現在機能している例: [ ループする数式を 1 つ用意したい ] ループが機能しないため、現在はこれを 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

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と小文字を区別せずに同じ列を調べ、 についてはその 1 つ右の列を調べNever、そうであれば行を非表示にします。

関連情報