ChatGPTとcopilotにVBAを質問

AI

ChatGPT

VBAでA列の値にYES以外の文字がある場合、行ごと削除するコードを教えて

VBAでA列の値に「YES」以外の文字がある場合、その行を削除するコードは以下の通りです。このコードは、A列の各セルを逆順にチェックし、「YES」以外の値がある行を削除します。逆順でチェックするのは、行を削除する際にインデックスがずれるのを防ぐためです。

以下の手順に従って、VBAマクロを実行してください。

  1. Excelを開き、Alt + F11キーを押してVBAエディタを開きます。
  2. InsertメニューからModuleを選択して、新しいモジュールを挿入します。
  3. 以下のコードをコピーして、新しいモジュールに貼り付けます。
vba

Sub DeleteRowsIfNotYes()
 Dim ws As Worksheet
 Dim lastRow As Long
 Dim i As Long

' 処理対象のワークシートを指定

 Set ws = ThisWorkbook.Sheets("Sheet1") ' 必要に応じてシート名を変更

' A列の最終行を取得  lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

' A列を逆順にループして、"YES"以外の行を削除

 For i = lastRow To 1 Step -1
  If ws.Cells(i, 1).Value <> "YES" Then
ws.Rows(i).Delete
  End If
 Next i
End Sub
  1. シート名が「Sheet1」ではない場合は、コード内のSet ws = ThisWorkbook.Sheets("Sheet1")を該当するシート名に変更してください。
  2. VBAエディタを閉じて、Excelに戻ります。
  3. Alt + F8キーを押してマクロダイアログを開き、「DeleteRowsIfNotYes」を選択して「実行」をクリックします。

これで、A列の値が「YES」以外の行がすべて削除されます。

copilot

VBAでA列の値にYES以外の文字がある場合、行ごと削除するコードを教えて

もちろんです!エクセルのVBA(Visual Basic for Applications)を使って、特定の文字がある行以外を削除するプログラムを作成できます。以下の方法で実現できます。

  1. InStr関数を使用する方法:

    • この方法では、特定の値を含む行以外を削除します。
    • 以下のVBAコードを使用してください。
    Sub DeleteRowsExceptSpecificValues()
        Dim LastRow As Long
        Dim i As Long
        Dim specificValues As Variant
        
        ' 最終行を取得
        LastRow = Cells(Rows.Count, 1).End(xlUp).Row
        
        ' 保持する特定の値を定義
        specificValues = Array("YES")
        
        ' 行を逆順にループ
        For i = LastRow To 1 Step -1
            If Not IsError(Application.Match(Cells(i, 1).Value, specificValues, 0)) Then
                ' 特定の値を含む行は削除しない
            Else
                Rows(i).Delete
            End If
        Next i
    End Sub
    
  2. Findメソッドを使用する方法:

    • この方法では、特定の値を含む行を削除します。
    • 以下のVBAコードを使用してください。
    Sub DeleteRowsWithSpecificValues()
        Dim LastRow As Long
        Dim i As Long
        Dim specificValues As Variant
        Dim cell As Range
        
        ' 最終行を取得
        LastRow = Cells(Rows.Count, 1).End(xlUp).Row
        
        ' 保持する特定の値を定義
        specificValues = Array("YES")
        
        ' 行を逆順にループ
        For i = LastRow To 1 Step -1
            Set cell = Cells(i, 1)
            If Not IsError(Application.Match(cell.Value, specificValues, 0)) Then
                ' 特定の値を含む行は削除しない
            Else
                cell.EntireRow.Delete
            End If
        Next i
    End Sub
    

どちらの方法でも、特定の値を含む行以外を削除できます。選択肢に応じて選んでください。123

もしさらなる質問があればお知らせください!

 

 

2024/6/7時点ではChatGPTに軍配は上がったようです。

アイキャッチ画像はGpt-4oで作成 

コメント