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の範囲にあると仮定します。
A | B | C |
前菜1 | メイン1 | デザート1 |
前菜2 | メイン2 | デザート2 |
前菜3 | メイン3 | デザート3 |
前菜4 | メイン4 | デザート4 |
このデータを使って、メイン1~4をランダムに表示したいならば、「RANDOM_SELECT」関数を使って次のように入力します。
=RANDOM_SELECT(B2:B5)
また、前菜1~4とデザート1~4をランダムに表示したいならば、「RANDOM_SELECT」関数を使って次のように入力します。
=RANDOM_SELECT(A2:A5,C2:C5)
複数回の抽出を行う場合
もし、複数回の抽出を行いたい場合は、別のセルに同じ関数を入力してください。それぞれのセルで異なる組み合わせが表示されます。
この関数に自動再計算機能:揮発性を持たせる
ユーザー定義関数では自動再計算機能(揮発性)を持ちません。揮発性を持たせるならば以下の記事を参考にしてください。
まとめ
この記事では、Excelで複数の範囲からランダムに値を抽出するユーザー定義関数「RANDOM_SELECT」の作成方法と使い方を解説しました。この関数を活用することで、データのサンプリングやシミュレーションなど、様々な場面で役立ちます。是非お試しください。
コメント