Excel:在符合兩個條件的表格中隨機選擇

Excel:在符合兩個條件的表格中隨機選擇

這是我的數據的範例:

Name:        Office:   Years:

John Smith   Canada      1

Bob Smith    Canada      1

Jake Smith   Canada      1

Sarah Smith  Canada      1

在另一張紙上,我想輸出一個基於辦公室和年份的隨機名稱。當我向下拖曳公式時,我希望它每次都給出不同的名稱(這就是我陷入困境的地方)。我嘗試了幾個公式,這是最接近的。

=INDEX($B$2:$B$436,MATCH(SMALL(IF($D$2:$D$436&$F$2:$F$436=$H$3&$I$3,$G$2:$G$436),1),$G$2:$G$436,0))

Column B = Name Column D=Office Column F=Years 那麼 H3 和 I3 是我的尋找值

G 列是一組隨機數 = rand()

答案1

我將把隨機化放入公式本身。如果您願意,您可以隨時將其放在另一列中。

A 列是姓名
B 欄位是辦公室
C 欄位是年份

Cell G2 是您感興趣的辦公室
Cell G3 是您感興趣的年份

=INDIRECT("A"&LARGE(IF($B$2:$B$7=G2,IF($C$2:$C$7=G3,ROW($A$2:$A$7),0),0), RANDBETWEEN(1,COUNTIFS(B:B,G2,C:C,G3))))

Ctrl這是一個陣列公式,需要使用+ Shift+輸入Enter

它的工作原理是創建一個具有行號的數組(如果條件匹配)或零(如果不匹配)。然後需要n第一個最大值,其中n是 1 到符合條件的行數之間的隨機數。

答案2

假設您想要傳回 A2 中的名稱(其中 A1 是標題或空白),然後在 A2 中使用此陣列公式

=INDEX($B$2:$B$436,SMALL(IF(($D$2:$D$436=$H$3)*($F$2:$F$436=$I$3)*(COUNTIF(A$1:A1,$B$2:$B$436)=0),ROW($B$2:$B$436)-ROW($B$2)+1),RANDBETWEEN(1,SUM(($D$2:$D$436=$H$3)*($F$2:$F$436=$I$3)*(COUNTIF(A$1:A1,$B$2:$B$436)=0)))))

CTRL使用+ SHIFT+確認CTRL並向下複製 - 變更函數A$1:A1中的範圍COUNTIF以符合起始儲存格上方的儲存格。

注意: - 使用此方法不需要一列隨機數

相關內容