Excel:在表中随机选择满足两个条件的

Excel:在表中随机选择满足两个条件的

以下是我的数据的一个例子:

Name:        Office:   Years:

John Smith   Canada      1

Bob Smith    Canada      1

Jake Smith   Canada      1

Sarah Smith  Canada      1

在另一张表上,我想根据 Office 和 Years 输出一个随机名称。当我将公式向下拖动时,我希望它每次都给出不同的名称(这就是我遇到的问题)。我尝试了几种公式,这是最接近的。

=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))

B 列 = 姓名 D 列 = 办公室 F 列 = 年份 然后 H3 和 I3 是我的查找值

G 列是一组随机数 = rand()

答案1

我要将随机化放在公式本身中。如果您愿意,您可以随时将其放在另一列中。

A 列为名称
B 列为办公室
C 列为年份

G2 单元格是您感兴趣的办公室
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++输入ShiftEnter

它的工作原理是创建一个包含行号的数组(如果条件匹配)或零(如果不匹配)。然后它获取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以匹配起始单元格上方的单元格。

注意:-使用此方法不需要一列随机数

相关内容