例文を使って繰り返し業務を時短

【マクロ・VBA】空白など条件を満たす列・行を削除する

エクセル、マクロ、VBAでループして、空白など条件を満たす列・行を削除する VBA

空白の列を削除する

このExcel VBAコードは、列の先頭3つのセルに値が入力されていない列を削除するものです。

Sub 空白の列削除()

'変数の宣言
Dim i As Long
Dim intColEnd As Long

'最終列の列番号を取得
intColEnd = ActiveSheet.UsedRange.Columns(ActiveSheet.UsedRange.Columns.Count).Column

'iの初期値設定
i = intColEnd

'最終列から順にループを回す
Do While i >= 1
   
    'セルが空白かどうかを確認
    If Cells(1, i).Value & Cells(2, i).Value & Cells(3, i).Value = "" Then
    
        '空白の場合、列を削除
        Columns(i).Delete
    
    End If
    
    'iを減算して、次の列に移動
    i = i - 1
Loop

'処理完了を通知するメッセージを表示
MsgBox "完了"

End Sub

解説

変数’iと’intColEndintColEndが宣言され、’intColEndintColEndは、’ActiveSheet.UsedRange.Columns(ActiveSheet.UsedRange.Columns.Count).コラムActiveSheet.UsedRange.Columns(ActiveSheet.UsedRange.Columns.Count).Columnでアクティブなシートの最終列の列番号を取得しています。

ループは、’Do While i >= 1iの初期値は、最終列の列番号’intColEndintColEndに設定されています。

次に、Cells(1, i).Value & Cells(2, i).Value & Cells(3, i).Valueを使用して、列の先頭3つのセルが空白かどうかを確認します。すべてが空白であれば、’Columns(i).削除Columns(i).Deleteを使用して列を削除します。

最後に、’i = i – 1で変数’iiを減算し、次の列に移動します。

処理が完了したら、’MsgBox “完了を使用してメッセージを表示します。

条件を満たす列を削除する

このVBAコードは、Excelのワークシート上で、特定の条件を満たす列を削除するマクロです。

Sub 条件を満たす列を削除する()  
 
    Dim I, lCol As Long
    lCol = Cells(1, Columns.Count).End(xlToLeft).Column 
 
    For I = lCol To 1 Step -1 
        
        If Cells(1, I) = "●●●" Then    
                Columns(I).Delete
        End If
    Next I
MsgBox "完了"      
End Sub

解説

変数Iと変数lColを宣言しています。変数Iは、forループのカウンタ変数であり、変数lColは、ワークシート上で使用されている最後の列の番号を格納する変数です。変数lColは、後ほど使用されます。

ワークシート上で使用されている最後の列の番号を取得します。これは、Columns.Countというメソッドで全列数を取得し、xlToLeftという引数を指定することで、右から左への検索を行い、最後のセルを取得しているためです。

Forループを使用して、最後の列から順番に列をチェックしていきます。

条件式の中で、列の1行目が「●●●」である場合、その列を削除します。Columns(I)は、I列全体を表しており、Deleteメソッドを呼び出すことで、その列を削除することができます。

次の列に移動して、同じ処理を繰り返します。

行削除_特定名称 *複数条件指定

このVBAコードは、Excelシートの特定の行を削除するためのマクロです。

Sub 行削除_特定名称() 

    Dim i, lRow As Long
    lRow = Cells(Rows.Count, "A").End(xlUp).Row 
    
  '最終行から1列目まで繰り返す
    For i = lRow To 2 Step -1 
      
     '東京支店又は神奈川支店と合計が0円の行が削除
        If (Cells(i, "A") = "東京支店" Or Cells(i, "A") = "神奈川支店") _
          Or Cells(i, "E") = 0 Then      
        
          Rows(i).Delete 
        End If
    
    Next i
    
MsgBox "完了"
End Sub

解説

最初に、変数’lRowForループを使用して、最終行から1行目まで逆順で繰り返し処理を行います。

各行について、以下の条件を確認します。

  • 列Aに”東京支店”または”神奈川支店”が含まれるかどうか。
  • 列Eの値が0であるかどうか。

これらの条件がいずれか1つでも満たされた場合、’Rows(i).

このVBAコードは、指定された条件を満たす行を簡単に削除できる便利な方法です。ただし、処理が完了する前に削除される行を事前に確認することが重要です。また、行番号が変更されるため、正しい行が削除されることを確認する必要があります。

列削除_名称一致

このVBAコードは、Excelの特定のシートで実行されるマクロです。このマクロの目的は、特定の文字列を含む列を削除することです。

Sub 列削除_名称一致()  

    Dim i, lCol As Long

    lCol = Cells(1, Columns.Count).End(xlToLeft).Column 

    For i = lCol To 1 Step -1  
        
        If Cells(1, i) = "性別" Then    
                Columns(i).Delete  
        End If
    Next i

MsgBox "完了"
End Sub

解説

  • Sub 列削除_名称一致(): この行は、サブルーチンの名前を示しています。このマクロは、列の削除に関するものです。
  • Dim i, lCol As Long: 変数iとlColを宣言し、両方ともLong型であることを示しています。
  • lCol = Cells(1, Columns.Count).End(xlToLeft).Column: 変数lColに、シートの最後の列の列番号を設定しています。この行は、最も右の列から左に向かって列を探索し、最初にデータがある列の番号を取得します。
  • i = lCol To 1 Step -1: 変数iを最後の列の番号から始め、最初の列の番号に向かって1ずつ減らしていきます。
  • Cells(1, i) = “性別” の場合: もし、セル(1, i)に”性別”という文字列があれば、以下の行を実行します。
  • 列(i)。削除: 列iを削除します。
  • 次の i: 次の iに進みます。
  • MsgBox “完了”: マクロが完了したことを示すメッセージボックスが表示されます。

つまり、このVBAコードは、Excelシートの1行目にある文字列”性別”を含む列を削除します。

ダミーデータのダウンロード

コメント

タイトルとURLをコピーしました