close

4299

Excel製作抽獎工具可自行設定抽取人數

如下圖,如果我們要根據B2儲存格內容從A欄25個人中隨機抽出幾個人,隨機抽取人員姓名顯示在D欄,C欄則顯示其列號。

image

IF函數

步驟1: 點取C2儲存格,輸入公式「=IF(ROW()-1<=B2,SORTBY(SEQUENCE(COUNTA(A:A),1,1,1), RANDARRAY(COUNTA(A:A),1)),"")」後,按CTRL+SHIFT+ENTER鍵完成輸入。

image

步驟2: 點取D2儲存格,輸入公式「=IF(ROW()-1<=$B$2,INDEX(A:A,C2,0),"")」後,將公式複製到D3:D26儲存格。

image

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儲存格值)列內容,否則不填入資料。


arrow
arrow

    錦子老師 發表在 痞客邦 留言(0) 人氣()