MS Excel:將字串列隨機化為字串網格

MS Excel:將字串列隨機化為字串網格

我有一個 MS Excel 工作表,單列中有 100 個姓名。

在另一張紙上,我有一個 10 x 10 的單元格網格,我想從中隨機分配列中的名稱。

有沒有相對簡單的方法來實現這一點,或者會涉及VBA類型的工作?

答案1

這可以透過建立一個從 1 到 100 的隨機訂單號碼的輔助列來完成。在B2中輸入:

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

並抄下來。

這將隨機選擇一個 1 到 100 之間的數字,其中 k 在 AGGREGATE 中為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,在第二行中找到 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. 在儲存格 F2 中輸入公式=INDEX($A$2:$A$101, MATCH(($E2-1)*10+F$1, $C$2:$C$101,0))並拖曳過 10x10 網格

範例解決方案

答案3

嘗試這個數組公式並以Shift+Ctrl+Enter:

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

在此輸入影像描述

相關內容