使用多个条件的列表中的随机项

时间:2014-11-25 15:08:41

标签: excel list random conditional-statements formula

我使用以下公式从列表中输出随机项,具体取决于某些因素。在此示例中,学生姓名位于A栏,考试成绩位于B栏。随机学生的选择条件是他或她的考试成绩超过80%:

{=INDEX(Database!A1:A100,SMALL(IF(Database!B1:B100>=80%,ROW(Database!A1:A100)-MIN(ROW(Database!A1:A100))+1),RANDBETWEEN(1,COUNTIF(Database!B1:B100,">=80%"))))}

除了这些专栏,我还有C栏的教育水平(选项是小学,高中和大学)。如何修改上述公式,输出一个随机学生,条件是考试成绩超过80%和大学教育?

2 个答案:

答案 0 :(得分:2)

您可以使用此版本

=INDEX(Database!A1:A100,SMALL(IF((Database!B1:B100>=80%)*(Database!C1:C100="College"),ROW(Database!A1:A100)-MIN(ROW(Database!A1:A100))+1),RANDBETWEEN(1,COUNTIFS(Database!B1:B100,">=80%",Database!C1:C100,"College"))))

需要使用 CTRL + SHIFT + ENTER

确认

公式

使用IFSMALL函数添加了额外条件,并在最后添加COUNTIFS函数中的相同条件(而不是COUNTIF

答案 1 :(得分:2)

如果您使用的是Excel 2007或更高版本:

=INDEX(Database!A1:A100,SMALL(IF(Database!B1:B100>=80%,IF(Database!C1:C100="College",ROW(Database!A1:A100)-MIN(ROW(Database!A1:A100))+1)),RANDBETWEEN(1,COUNTIFS(Database!B1:B100,">=80%",Database!C1:C100,"College"))))

如果不是:

=INDEX(Database!A1:A100,SMALL(IF(Database!B1:B100>=80%,IF(Database!C1:C100="College",ROW(Database!A1:A100)-MIN(ROW(Database!A1:A100))+1)),RANDBETWEEN(1,SUM((Database!B1:B100>=80%)*(Database!C1:C100="College")))))

两者都是数组公式。

此致