Excelで大量の名簿データを扱っていると、氏名に対応した番号を入力する作業は非常に手間がかかります。特に同じ人物の名前が複数の列に分かれて登録されている場合、手作業で番号を入力すると時間がかかるだけでなく、入力ミスの原因にもなります。
このような作業はExcelマクロ(VBA)を使うことで自動化できます。この記事では、複数の列に入力された氏名を検索し、それぞれの左隣の列へ対応する番号を自動入力する考え方や、初心者でも使いやすいマクロの作成方法を解説します。
大量の氏名データに番号を入力する作業はマクロで自動化できる
数千件から1万件規模のデータに対して、氏名ごとの番号を入力する作業はExcelの関数でも対応できますが、複数列をまたぐ場合や繰り返し作業が発生する場合はマクロが便利です。
例えば、C列・E列・G列に氏名が入力されていて、B列・D列・F列へそれぞれ対応する番号を入れたい場合、VBAで各セルの名前を確認し、一覧表から該当する番号を取得して自動入力できます。
人間が600人分の番号を探しながら1万件入力する場合は多くの時間が必要ですが、マクロなら同じ処理を数秒から数分程度で完了できます。
事前に番号対応表を作成しておく
マクロで処理する前に、氏名と番号の対応表を用意しておくと管理しやすくなります。
例えば、別シートに以下のような一覧を作成します。
| 番号 | 氏名 |
|---|---|
| 1 | 日本太郎 |
| 2 | 日本花子 |
| 3 | 日本二郎 |
この一覧を基準にして、C列・E列・G列にある氏名を検索し、対応する番号を左隣の列へ入力する仕組みにします。
氏名から番号を入力するExcel VBAマクロ例
以下は、対応表を参照して複数列の氏名に番号を入力する基本的なマクロ例です。
Sub 氏名から番号入力()
Dim ws As Worksheet
Dim listWs As Worksheet
Dim lastRow As Long
Dim i As Long
Dim c As Range
Dim result As Variant
Set ws = Worksheets("データ")
Set listWs = Worksheets("対応表")
lastRow = listWs.Cells(listWs.Rows.Count, "B").End(xlUp).Row
For Each c In ws.Range("C:C,E:E,G:G")
If c.Value <> "" Then
result = Application.VLookup(c.Value, listWs.Range("B2:C" & lastRow), 2, False)
If Not IsError(result) Then
c.Offset(0, -1).Value = result
End If
End If
Next c
End Sub
このマクロでは、C列・E列・G列の氏名を順番に確認し、対応表から番号を探して左隣のセルへ入力します。
実際のExcelファイルではシート名や検索範囲が異なるため、「データ」「対応表」の部分や列番号は、自分の表に合わせて変更してください。
初心者がマクロを使うときの注意点
Excelマクロを初めて使う場合は、必ず元データのバックアップを作成してから実行することが重要です。マクロは大量のデータを一瞬で変更できる便利な機能ですが、設定を間違えると元に戻すのが難しい場合があります。
また、氏名データでは同姓同名の問題にも注意が必要です。例えば「山田太郎」という名前が2人いる場合、名前だけでは正確な番号を判断できません。
そのような場合は、社員番号や生年月日など、重複しない情報を組み合わせて管理すると安全です。
マクロ以外にも使えるExcelの方法
同じような処理は、Excel関数でも実現できます。例えばXLOOKUPやVLOOKUPを使えば、氏名から番号を取得することができます。
ただし、今回のように複数列を処理したり、毎月同じ作業を繰り返したりする場合は、マクロ化することで作業時間を大幅に短縮できます。
まずは関数で仕組みを理解し、その後に定期的な作業をマクロへ置き換えるという流れで覚えると、Excel初心者でも無理なく自動化スキルを身につけられます。
まとめ
大量の氏名データに対応する番号を入力する作業は、Excelマクロを使うことで効率的に処理できます。
特に複数列に分散した氏名を検索して番号を入力する作業では、対応表を用意し、VBAで自動検索する方法が有効です。
Excelマクロは最初は難しく感じるかもしれませんが、単純な繰り返し作業を自動化するところから始めることで、業務効率を大きく向上させることができます。


コメント