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

【マクロ・VBA】ループ処理して、特定のワードに一致した行・列を削除する

エクセル、マクロ、VBAでループ、マッチングさせて一致した行、列を削除する VBA

縦(行)ループ/行削除

指定の列に特定のワードに一致した場合、該当する行を削除するエクセルマクロです。

*必要に応じて、ワードに一致する列番号を変更して活用してください。

Sub 特定のワードに一致した場合_該当行を削除()

Dim targetSheet As Worksheet
Set targetSheet = ThisWorkbook.ActiveSheet
        
Dim MaxRow1 As Long 
MaxRow1 = targetSheet.Cells(Rows.Count, 2).End(xlUp).Row
     
Dim MaxCol1 As Long 
MaxCol1 = targetSheet.Cells(1, Columns.Count).End(xlToLeft).Column 
        
Dim i As Long
For i = 2 To MaxRow1
    
    If ActiveSheet.Cells(i, 1) = "総計" Then
            Application.Rows(i).Delete
    End If
        
    If ActiveSheet.Cells(i, 1) = "" Then   
            Application.Rows(i).Delete
    End If
        
    If ActiveSheet.Cells(i, 7) = "年間総計" Then
            Application.Rows(i).Delete
    End If

Next
    
MsgBox "完了"
End Sub

特定のワードに一致した場合、対応する行を削除する方法の流れ

  1. 最初に、対象のシートを設定し、最大行数と最大列数を取得します。
  2. 次に、Forループを使用して各行をループします。Ifステートメントを使用して、特定のワードに一致する行を判別します。条件に一致する場合、Application.Rows(i).Deleteを使用して、該当行を削除します。
  3. 最後に、完了メッセージを表示するためのMsgBoxステートメントを使用して処理を終了します。

解説

  • シート名を指定する場合:Worksheets(“シート名”)
  • 参考)セル範囲を指定する方法
       Set cH = targetSheet.Range(“E33:E” & MaxCol1) 
  • A列のセルが総計というワードの場合、行削除
  • A列のセルが空白の場合、行削除
  • G列が年間総計の場合、行削除

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

列削除_名称一致

*必要に応じて、ワードに一致する列名を変更して利用してください。

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

特定のワードに一致した場合、対応する列を削除する方法の流れ

  1. まず、最後の列の番号を取得します。
  2. 次に、Forループを使用して各列をループします。Ifステートメントを使用して、特定のワードに一致する列を判別します。条件に一致する場合、Columns(i).Deleteを使用して、該当列を削除します。
  3. 最後に、完了メッセージを表示するためのMsgBoxステートメントを使用して処理を終了します。

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

コメント

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