Excel VBAを活用すると、指定した名前リストからランダムに抽出し、セルに自動で配置する処理が簡単に実現できます。
本記事では、重複のないランダムな名前の抽出とセル配置の手順について、VBAコードとあわせてご紹介いたします。
実現したいこと
- 名前リストから ランダムに6人を選抜
- 選ばれた名前を セルに2列ずつ3行で配置
- 重複を避けて選択(同じ名前が複数回選ばれないように)
使用するVBAコード
以下のコードを標準モジュールに貼り付けて実行すれば、アクティブセルの右隣からランダムに選ばれた名前が配置されます。
Sub FillNamesNextToTargetCell()
Dim TargetCell As Range
Dim NameList As Variant
Dim SelectedNames() As String
Dim i As Integer, j As Integer
Dim TempName As String, RandomIndex As Integer
' 対象のセルをアクティブなセルとして設定
Set TargetCell = ActiveCell
' 名前のリスト
NameList = Array("森", "小森", "中森", "大森", "林", "小林", "中林", "大林", "小木", "中木", "大木")
' リストからランダムに6人選抜
ReDim SelectedNames(1 To 6)
For i = 1 To 6
Do
RandomIndex = Int(Rnd() * UBound(NameList) + 1)
TempName = NameList(RandomIndex - 1)
Loop Until Not IsInArray(TempName, SelectedNames)
SelectedNames(i) = TempName
Next i
' 選ばれた名前を3行×2列に配置
j = 1
For i = 1 To 6 Step 2
TargetCell.Offset(j - 1, 1).Value = SelectedNames(i)
TargetCell.Offset(j - 1, 2).Value = SelectedNames(i + 1)
j = j + 1
Next i
End Sub
判定用関数(重複確認)
Function IsInArray(valToBeFound As Variant, arr As Variant) As Boolean
Dim element As Variant
On Error GoTo ErrorHandler
For Each element In arr
If element = valToBeFound Then
IsInArray = True
Exit Function
End If
Next element
ExitFunction:
Exit Function
ErrorHandler:
IsInArray = False
Resume ExitFunction
End Function
コードの説明
メイン処理:FillNamesNextToTargetCell
TargetCell = ActiveCell
配置の起点を、実行時に選択されているセルに設定します。NameList
ランダム選出対象となる名前の一覧です。任意の人数・名前に変更可能です。SelectedNames
ランダムで6名選抜し、重複を避けて選択するよう制御されています。Offset(j - 1, 1)
アクティブセルの右側に、2列分の名前を3行で配置します。
判定関数:IsInArray
この関数は、すでに選ばれた名前の中に同じ名前が含まれていないかを判定します。
重複を排除するための重要な補助関数です。
注意点と補足
Rnd()はExcelを起動するたびに同じ乱数系列を返す可能性があります。必要に応じてRandomizeを使って乱数の初期化を行うとより自然なランダム性が得られます。
Randomize
- 名前のリストが6名未満の場合、このコードは無限ループに陥る可能性があります。最低でも6名以上のリストが必要です。
まとめ
Excel VBAを使えば、ランダムなグループ分けや抽選処理を自動化することが可能です。
今回のようなサンプルコードを活用することで、重複なしの選出・整ったセル配置が簡単に実装できます。
- 名前リストからランダム抽出
- 重複回避のためのチェック関数付き
- 配置レイアウトも柔軟にカスタマイズ可能
日常の業務効率化やイベントでの抽選処理など、さまざまな用途にご活用ください。
最後までお読みいただき、ありがとうございました。
技術書の購入コストを抑えてスキルアップするなら

ここまで読んでいただきありがとうございます。最後に宣伝をさせてください。
プログラミングの技術書や参考書は、1冊3,000円〜5,000円するものも多く、出費がかさみがちです。Kindle Unlimitedであれば、月額980円で500万冊以上の書籍が読み放題となります。
気になる言語の入門書から、アルゴリズム、基本設計の専門書まで、手元のスマホやPCですぐに参照可能です。現在は「30日間の無料体験」や、対象者限定の「3か月499円プラン」なども実施されています。まずはご自身のアカウントでどのようなオファーが表示されるか確認してみてください。
