4299 |
Excel製作抽獎工具可自行設定抽取人數 |
如下圖,如果我們要根據B2儲存格內容從A欄25個人中隨機抽出幾個人,隨機抽取人員姓名顯示在D欄,C欄則顯示其列號。
IF函數
步驟1: 點取C2儲存格,輸入公式「=IF(ROW()-1<=B2,SORTBY(SEQUENCE(COUNTA(A:A),1,1,1), RANDARRAY(COUNTA(A:A),1)),"")」後,按CTRL+SHIFT+ENTER鍵完成輸入。
步驟2: 點取D2儲存格,輸入公式「=IF(ROW()-1<=$B$2,INDEX(A:A,C2,0),"")」後,將公式複製到D3:D26儲存格。
C2儲存格公式說明
=IF(ROW()-1<=B2,SORTBY(SEQUENCE(COUNTA(A:A),1,1,1),RANDARRAY(COUNTA(A:A),1)),"")
首先產生一個陣列,以A欄目前有資料的儲存格數量(COUNTA(A:A))作為列數,只有一欄,從1開始遞增1填入陣列中(SEQUENCE(COUNTA(A:A),1,1,1))。
SEQUENCE:在陣列中產生一個連續數字的清單(例如:1、2、3、4)
=SEQUENCE(rows,[columns],[start],[step])
Rows:要傳回的列數。
Columns:要傳回的欄數。
Start:連續值的第一個數字。
Step:陣列中每個連續值遞增的量。
傳回一個介於0到的亂數陣列,共有N列(A欄目前有資料的儲存格數量(COUNTA(A:A))),1欄(RANDARRAY(COUNTA(A:A),1))。
RANDARRAY:傳回介於0和1之間的隨機亂數陣列。然而,您可以指定要填滿的列與欄數量、最小值和最大值,以及是否要傳回整數或小數數值。(365/2021)
=RANDARRAY([rows],[columns],[min],[max],[whole_number])
ROWS:想要傳回的列數。
COLUMNS:想要傳回的欄數。
MIn:想要傳回的最小值。
MAX:想要傳回的最大值。
WHOLE_NUMBER:傳回整數(TRUE)或小數值(FALSE)。
將SEQUENCE傳回的陣列,依照RANDARRAY函數傳回值遞增排序(SORTBY(SEQUENCE(COUNTA(A:A), 1,1,1),RANDARRAY(COUNTA(A:A),1)))。
SORTBY:依據對應範圍或陣列中的值來排序範圍或陣列的內容(365/2021)。
=SORTBY(array,by_array1,[sort_order1],[by_array2, sort_order2],…)
Array:要排序的陣列或範圍。
by_array1:陣列或範圍的排序依據。
sort_order1:要用於排序的順序。1表示遞增,而-1表示遞減。預設值為遞增。
by_array2:陣列或範圍的排序依據。
sort_order2:要用於排序的順序。1表示遞增,而-1表示遞減。 預設值為遞增。
如果目前列號減1小於或等於B2儲存格數值(ROW()-1<=B2),則執行SORTBY函數公式(SORTBY (SEQUENCE(COUNTA(A:A),1,1,1),RANDARRAY(COUNTA(A:A),1))),否則不填入資料。
D2儲存格公式說明
=IF(ROW()-1<=$B$2,INDEX(A:A,C2,0),"")
如果目前列號小於等於B2儲存格數值(ROW()-1<=$B$2),則用INDEX函數傳回A欄中第N(C2儲存格值)列內容,否則不填入資料。
留言列表