Excel - 从不包括现有字符串的字符串列表中选择随机字符串

Excel - choose random string from list of strings not including an existing string

我正在为一些测试标记自动评论,我想给正确答案的评论一些变化,所以我使用了以下公式:

=IF(E5=1,CHOOSE(RANDBETWEEN(1,4),"Great work!","Excellent work!","Great job!","Well done!"),"")

此处,如果答案正确,则单元格 E5 设置为 1,并从 4 条评论中选择一条,否则留空字符串。

这很好用,但是测试有两个问题,如果两个问题都正确,他们不会收到相同的评论,我会更喜欢它。

例如,如果上面的公式在单元格 E11 中并且 E16=1 表明问题 2 是正确的,那么我想按照以下方式做一些事情:

=IF(E16=1,IF(E11="",CHOOSE(RANDBETWEEN(1,4),"Great work!","Excellent work!","Great job!","Well done!"),CHOOSE(RANDBETWEEN(1,3),[set difference of original strings and string in E11])),"")

通俗地说:给定问题 2 是正确的,但问题 1 不是,要确定问题 2 的评论只是 select 列表中的随机评论;但是,如果两个问题都正确,则问题 2 的评论必须从原始列表中随机 selected,不包括对问题 1 给出的评论(无重复)。

..但我不确定如何在 Excel.

中实现它

编辑:

我知道我可以为每个问题提供两个不相交的“正确”评论列表,这样就不会出现任何重复,但我很好奇是否可以使用 Excel 与否。

如果你有 Excel 365 你可以过滤掉已经使用过的词组:

=LET(congrats,{"Great work!","Excellent work!","Great job!","Well done!"},
filterCongrats,FILTER(congrats,congrats<>E11),
IF(E16=1,INDEX(filterCongrats,RANDBETWEEN(1,COUNTA(filterCongrats))),""))