【VBA】ランダムに名前を選んでセルに配置する方法|重複なしで自動振り分け

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を使えば、ランダムなグループ分けや抽選処理を自動化することが可能です。
今回のようなサンプルコードを活用することで、重複なしの選出・整ったセル配置が簡単に実装できます。

  • 名前リストからランダム抽出
  • 重複回避のためのチェック関数付き
  • 配置レイアウトも柔軟にカスタマイズ可能

日常の業務効率化やイベントでの抽選処理など、さまざまな用途にご活用ください。
最後までお読みいただき、ありがとうございました。

副業から独立まで「稼げる」Webスキルを習得する(PR)

ここまで読んでいただきありがとうございます。 最後に宣伝をさせてください。

「副業を始めたいが、何から手をつければいいかわからない」「独学でスキルはついたが、収益化できていない」という悩みを持つ方には、マンツーマン指導のWebスクール**「メイカラ」**が適しています。

このスクールは、単に技術を教えるだけでなく、**「副業として具体的にどう稼ぐか」**という実務直結のノウハウ提供に特化している点が特徴です。

講師陣は、実際に「副業Webライターから1年で独立して月収100万円」を達成したプロや、現役で利益を出し続けているブロガーなど、確かな実績を持つプレイヤーのみで構成されています。そのため、机上の空論ではない、現場で通用する戦術を学ぶことができます。

副業に特化した強み

  • 最短ルートの提示: 未経験からでも実績を出せるよう、マンツーマンで指導。
  • AI活用の習得: 副業の時間対効果を最大化するための、正しいAI活用スキルも網羅。
  • 案件獲得のチャンス: 運営がWebマーケティング会社であるため、実力次第で社内案件の紹介など、仕事に直結する可能性があります。

受講者の多くは、「在宅でできる仕事を探している」「副業を頑張りたい」という20代・30代・40代が中心です。

受講前には、講師による無料説明が行われます。無理な勧誘はなく、自分に合った副業スタイルやプランを相談できるため、まずは話を聞いてみることから始めてみてはいかがでしょうか。

ブログで稼ぎたいなら「メイカラ」

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次