這是我的數據的範例:
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
以符合起始儲存格上方的儲存格。
注意: - 使用此方法不需要一列隨機數