MENU

【ChatGPT×VBA】複数列でフィルターし、結果をコピーする

複数列でフィルターし、結果をコピーする

店舗が「世田谷」で賞味期限が「2024/07/07」以降でフィルターし、結果をコピーする事例です。

 

ChatGPTのプロンプト

下記の処理の概要に沿ったVBAコードを作成できますか?
マクロ名:デモ 概要: 
指定したセル範囲を、「 2つ 」の条件でフィルターし、その結果をコピーする。 手順: ・「 Sheet1 」シートのセル範囲「 A1 」セルから「 D1 」セルの最終行のセルまでを選択する。 ・選択した範囲にオートフィルタを適用する。 ・選択した範囲の「 1列目 」を「 世田谷 」、および「 4列目 」を「 2024/07/07 」より大きい日でフィルターする。 ・フィルタリングされたデータをすべて(値だけでなく、書式も含む)コピーし、「 Sheet1 」シートの「 G1 」セルに貼り付ける。 ・コピー状態を解除する。 ・フィルタを解除する。 全体的な指針: ・変数の宣言は使用する直前に行う。これは、変数の宣言を漏らさないためである。 ・日本語でコメントをいれる。 ・コードの最初に画面の更新と警告の表示を停止し、コードの最後でそれらを再開する。

 

(ポイント1)上の「プロンプトをコピーする」ボタンで、コピーできます。

 

(ポイント2)ChatGPTに貼り付けて、緑色の単語を、あなたの処理に合わせて修正します。内容の削除追加もできます。
(注:プロンプトの全てを読む必要はありません。緑色の行のみ集中して読み、修正してください)

(ポイント3)会話のスタイルは、「より厳密に」を選択します。

 

(ポイント4)プロンプトの改行は、ShiftキーEnterキーを同時に押します。

ChatGPTの回答

もちろんです。以下に指定の条件に基づいたVBAコードを示します:

Sub デモ()
    ' 画面の更新と警告の表示を停止
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False

    ' 変数の宣言
    Dim ws As Worksheet
    Dim rng As Range
    Dim lastRow As Long

    ' 「Sheet1」シートを選択
    Set ws = ThisWorkbook.Sheets("Sheet1")

    ' 「A1」セルから「D1」セルの最終行のセルまでを選択
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    Set rng = ws.Range("A1:D" & lastRow)

    ' 選択した範囲にオートフィルタを適用
    rng.AutoFilter

    ' 「1列目」を「世田谷」、および「4列目」を「2024/07/07」より大きい日でフィルター
    rng.AutoFilter Field:=1, Criteria1:="世田谷"
    rng.AutoFilter Field:=4, Criteria1:=">2024/07/07", Operator:=xlAnd

    ' フィルタリングされたデータをすべて(値だけでなく、書式も含む)コピー
    rng.SpecialCells(xlCellTypeVisible).Copy

    ' 「Sheet1」シートのセル「G1」に貼り付け
    ws.Range("G1").PasteSpecial Paste:=xlPasteAll

    ' コピー状態を解除
    Application.CutCopyMode = False

    ' フィルタを解除
    rng.AutoFilter

    ' 画面の更新と警告の表示を再開
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
End Sub

プロンプトを作成し、VBAコードを実行してみて! ChatGPT凄い!!😊

 

VBAマクロを無料のChatGPTMicrosoft Copilotで作成します。

Copilot(https://copilot.microsoft.com)はログイン不要。すぐVBAマクロが完成します。