【Excelマクロ】チェックが付いたデータだけを別シートに抽出

日々の業務でExcelを使っていると、「チェックを入れた行だけを別のシートにまとめたい」と感じることがあります。

たとえば、アンケート結果の中から「確認済み」のデータだけを抽出したり、TODOリストで「完了」にチェックを入れたタスクだけを別シートにコピーしたりするシーンです。

このような作業を毎回手作業でやっていると、チェックミスや転記ミスが起きやすくなります。そこで役立つのが、チェック付き行だけを自動で抽出するVBAマクロです。7

今回は、チェックボックスの代わりに「✓」や「○」などの記号、あるいは「TRUE/FALSE」などのフラグを使っているケースを想定し、具体的なマクロとその応用について紹介します。

チェック済みの行を抽出する基本マクロ

次のコードは、元データが「Sheet1」のA列からD列にあり、チェックフラグがE列に入っていると仮定しています。チェック内容は「○」とします。

Sub CopyCheckedRows()
    Dim srcSh As Worksheet
    Dim dstSh As Worksheet
    Dim i As Long
    Dim j As Long
    Dim lastRow As Long

    Set srcSh = Worksheets("Sheet1")
    Set dstSh = Worksheets("Checked")

    dstSh.Cells.ClearContents

    lastRow = srcSh.Cells(Rows.Count, 1).End(xlUp).Row
    j = 1

  '2行目から最終行まで処理を行う
    For i = 2 To lastRow
        If srcSh.Cells(i, 5).Value = "○" Then
            srcSh.Range(srcSh.Cells(i, 1), srcSh.Cells(i, 4)).Copy
            dstSh.Cells(j, 1).PasteSpecial Paste:=xlPasteValues
            j = j + 1
        End If
    Next i

    '切り取り、コピーモードを元に戻す
    Application.CutCopyMode = False
End Sub

このマクロのポイントは以下の通りです。

  • 元シートは「Sheet1」、抽出先は「Checked」としています。
  • E列(5列目)に「○」が入っている行だけを抽出。
  • コピー範囲はA〜D列に固定。
  • PasteSpecial Paste:=xlPasteValues により、値だけを転記しています。

チェック列をTRUE/FALSEなどに変えたい場合は、条件文だけ書き換えればOKです。

If srcSh.Cells(i, 5).Value = True Then

チェックボックスを使っている場合の応用

フォームコントロールやActiveXのチェックボックスを使っている場合、セルではなくオブジェクトとして配置されているため、少し工夫が必要です。ただ、チェック状態の管理をセルで代用できれば、上記のようなコードで十分対応可能です。

たとえば、チェックボックスと連動するセル(リンクセル)をE列に設定しておけば、そこにTRUE/FALSEが反映されます。そのため、VBA側はセルの値を見るだけでOKになります。

If srcSh.Cells(i, 5).Value = True Then

このように、チェックボックスを直接操作せずに、セルを介して状態を管理することで、マクロの構造はシンプルになります。

実装するメリット

チェック付きデータを別シートに自動抽出することで、次のようなメリットがあります。

  • 手作業でのフィルタやコピー作業が不要になる
  • 転記ミスを防げる
  • 定型処理としてボタン1つで再実行できる
  • チェック付きデータを抽出→集計という流れがスムーズになる

とくに、チェックのルールをチームで統一しておけば、全員が同じマクロで作業効率を上げられるのも大きな利点です。

まとめ

チェックが付いた行だけを別シートに抽出する処理は、VBAを使えば簡単に自動化できます。チェック列に記号やTRUE/FALSEなどの簡単な目印を設け、繰り返し使える汎用マクロとして活用することで、作業時間を大幅に短縮できます。

  • チェック列(E列など)を見て条件付きで抽出する
  • フォームのチェックボックスは、リンクセルを介して判定するとシンプルにできる
  • 値だけを貼り付けることで、書式に左右されない安定した処理が可能
  • 抽出先シートの内容は毎回クリアしてから書き込むとミスを防げる

このようなマクロは、ToDoリストの管理、アンケートデータの集計、進捗管理表の抽出など、日常業務の中でさまざまに応用できます。シンプルな処理から少しずつVBAに慣れていきましょう。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール