VBAを使って、Excelのシート間で担当者と業務名を比較し、一致した場合に◯をつける処理を効率化する方法について解説します。この記事では、シート1とシート2にある担当者と業務名を照らし合わせ、担当者ごとに◯をつける方法を紹介します。
VBAを使った担当者名と業務名の比較
まず、シート1には担当者と業務名、シート2には業務名と担当者名が記載されており、担当者名が一致した場合にシート1の該当セルに◯をつけるマクロを作成します。VBAを使用することで、大量のデータを効率的に処理することができます。
基本的な流れは、シート1の担当者名をシート2の担当者名と照合し、一致した場合に◯を付けるというものです。これを実現するために、ループ処理を使用します。
シート間で担当者名を比較して◯をつけるVBAコード
以下のコードは、シート1とシート2の担当者名を比較し、一致した場合に◯をシート1に付けるVBAのサンプルです。
Sub 別シートデータと一致したら◯をつける() Dim ws1 As Worksheet, ws2 As Worksheet Dim lastRow1 As Long, lastRow2 As Long Dim i As Long, j As Long Dim matchFound As Boolean ' シート1とシート2を変数にセット Set ws1 = ThisWorkbook.Sheets("Sheet1") ' 条件が記載されているシート Set ws2 = ThisWorkbook.Sheets("Sheet2") ' データが記載されているシート ' 各シートの最終行を取得 lastRow1 = ws1.Cells(Rows.Count, "A").End(xlUp).Row ' Sheet1のA列の最終行 lastRow2 = ws2.Cells(Rows.Count, "A").End(xlUp).Row ' Sheet2のA列の最終行 ' シート1のA列のデータとシート2のA列のデータを比較 For i = 2 To lastRow1 ' 1行目は見出しと仮定 matchFound = False For j = 2 To lastRow2 ' 1行目は見出しと仮定 If ws1.Cells(i, "A").Value = ws2.Cells(j, "A").Value Then ' 条件が一致した場合 ws1.Cells(i, "B").Value = "◯" ' Sheet1のB列に"◯"を書き込む matchFound = True Exit For ' 一致したら内側のループを抜ける End If Next j If Not matchFound Then ws1.Cells(i, "B").Value = "" '一致しない場合はB列を空白にする End If Next i MsgBox "処理が完了しました。" End Sub
このコードでは、シート1とシート2のA列のデータ(担当者名)を照合し、一致した場合にシート1のB列に◯を記入する処理を行っています。
担当者ごとに丸をつける方法
もし、シート1に複数の担当者があり、それぞれに対して丸を付けたい場合、このVBAコードを活用し、担当者ごとに繰り返し処理を行います。コード内で担当者ごとのチェックを行うことで、シート1の該当するセルに対して◯を付けていきます。
また、担当者が複数回登場する場合は、該当する業務名に対して◯を付けるようなロジックを組み込むこともできます。これにより、より柔軟な処理が可能となります。
まとめ
VBAを使用して、Excelのシート間で担当者名と業務名を比較し、該当する場合に◯を付ける処理を行う方法について紹介しました。この方法を使えば、手動でデータを照合する手間を省き、大量のデータを効率的に処理することができます。シート間でのデータ照合や担当者ごとの処理を行いたい場合、VBAを活用することで、作業を大幅に効率化できます。


コメント