Excelで複数の範囲からランダムに値を抽出するユーザー定義関数

Excelで簡単に複数の範囲からランダムに値を抽出する方法

この記事では、Excelで複数の範囲からランダムに値を抽出するためのユーザー定義関数の作成方法と使い方を解説します。ここでは作成するユーザー定義関数に「RANDOM_SELECT」と名前を付けています。

「RANDOM_SELECT」関数の意義

Excelの標準機能では、単一の範囲からランダムに値を抽出することは可能ですが、複数の範囲からランダムに値を抽出することは直接的にはできません。この「RANDOM_SELECT」関数を使うことで、複数の範囲を指定して簡単にランダムな値を取得することができます。これにより、データのサンプリングやシミュレーションなど、さまざまな場面で役立ちます。

ユーザー定義関数のコード

ユーザー定義関数のコードは以下の通りです。

Function RANDOM_SELECT(ParamArray Ranges() As Variant) As Variant
    Dim AllCells As Collection
    Dim Cell As Range
    Dim Target As Range
    Dim rng As Variant
    
    Set AllCells = New Collection
    
    For Each rng In Ranges
        If TypeName(rng) = "Range" Then
            For Each Cell In rng.Cells
                If Not IsEmpty(Cell) Then
                    AllCells.Add Cell
                End If
            Next Cell
        End If
    Next rng
    
    If AllCells.Count > 0 Then
        Set Target = AllCells.Item(Application.WorksheetFunction.RandBetween(1, AllCells.Count))
        RANDOM_SELECT = Target.Value
    Else
        RANDOM_SELECT = CVErr(xlErrNA)
    End If
End Function

「RANDOM_SELECT」関数の作成方法

この関数を使うためには、まずExcelのVBAエディタでユーザー定義関数を作成する必要があります。VBAエディタを開いて、標準モジュールにコードを貼り付けるだけです。詳細な手順は、過去の記事を参照してください。

「RANDOM_SELECT」関数の使い方

以下に、「RANDOM_SELECT」関数の使用例を示します。次のようなデータがA1:C4の範囲にあると仮定します。

ABC
前菜1メイン1デザート1
前菜2メイン2デザート2
前菜3メイン3デザート3
前菜4メイン4デザート4

このデータを使って、各カテゴリからランダムに選ばれたメニューを組み合わせたい場合、「RANDOM_SELECT」関数を使って次のように入力します。

  =RANDOM_SELECT("A1:A4", "B1:B4", "C1:C4")

これにより、A1:A4, B1:B4, C1:C4のそれぞれの範囲からランダムに選ばれた値が結合され、例えば「前菜2 メイン3 デザート1」のような組み合わせが表示されます。

複数回の抽出を行う場合

もし、複数回の抽出を行いたい場合は、別のセルに同じ関数を入力してください。それぞれのセルで異なる組み合わせが表示されます。

まとめ

この記事では、Excelで複数の範囲からランダムに値を抽出するユーザー定義関数「RANDOM_SELECT」の作成方法と使い方を解説しました。この関数を活用することで、データのサンプリングやシミュレーションなど、様々な場面で役立ちます。是非お試しください。

Follow me!

コメント

PAGE TOP
タイトルとURLをコピーしました