
我有一個 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))