MS Excel: 文字列の列を文字列のグリッドにランダム化する

MS Excel: 文字列の列を文字列のグリッドにランダム化する

1 つの列に 100 個の名前が入った MS Excel シートがあります。

別のシートには、10 x 10 のセルのグリッドがあり、その列からランダムに名前を割り当てたいと考えています。

これを実現する比較的簡単な方法はありますか、それとも VBA タイプの作業が必要になりますか?

答え1

これは、1 から 100 までのランダムな順序番号を作成するヘルパー列を使用して実行できます。名前を A2:A101 に入力します。B2 には次のものを入力します。

=AGGREGATE(15,7,ROW($1:$100)/(COUNTIFS($B$1:B1,ROW($1:$100))=0),RANDBETWEEN(1,100-COUNT($B$1:B1)))

そして書き写します。

これにより、AGGREGATE 内の k が である 1 から 100 までの数字がランダムに選択されますRANDBETWEEN(1,100-COUNT($B$1:B1))。 はCOUNTIFS($B$1:B1,ROW($1:$100))=0重複が発生しないようにします。

ここに画像の説明を入力してください

次に、INDEX/MATCH を使用して値を検索します。これをグリッドの右上隅に配置します。

=INDEX($A:$A,MATCH((ROW($A1)-1)*10+COLUMN(A$1),$B:$B,0))

上下にドラッグすると、最初の行で 1 ~ 10 が検索され、2 番目の行で 11 ~ 20 が検索されます。また、ルックアップ列はランダム化されているため、ランダムになります。

次に、10 をコピーして 10 をコピーします。

ここに画像の説明を入力してください


Office 365 Excel をお持ちの場合は、INDEX/MATCH を次の動的バージョンに置き換えて、10x10 を自動的にスピルすることができます。

=INDEX(A:A,MATCH(SEQUENCE(10,10),B:B,0))

答え2

名前が列 A に保存されていると仮定します。

  1. 列Bに次の数式を適用します。=RAND()
  2. 結果の値をコピーして列Bに貼り付け、数式を上書きします。
  3. 列Cに数式を適用します=RANK(B2, $B$2:$B$101)。これにより、各名前に1~100の番号を割り当てることができます。
  4. 10x10 グリッドの上に、1 ~ 10 の数字を追加します。10x10 グリッドの左側でも同じことを行います。これらは行ヘッダーと列ヘッダーとして機能します。

ここで、行ヘッダーが でE2:E11、列ヘッダーが であると仮定しますF1:O1...

  1. =INDEX($A$2:$A$101, MATCH(($E2-1)*10+F$1, $C$2:$C$101,0))セルF2に数式を入力し、10x10のグリッドに沿ってドラッグします。

解決策の例

答え3

この配列数式を試して、最後にShift+Ctrl+Enter キー:

=INDEX($A$1:$A$10,RANDBETWEEN(1,COUNTA($A$1:$A$10)))

ここに画像の説明を入力してください

関連情報