如何在Excel 365中生成列唯一的随机文本型宾果卡
Excel 365 文本型宾果卡实现方案
方案一:单函数生成5x5宾果卡数组
直接通过一个函数输出完整的5x5宾果卡,自动适配数据源各列的行数变化,每列仅提取对应数据源列的非空内容且保证列内唯一:
=BYCOL(Options, LAMBDA(col, TAKE(SORTBY(FILTER(col, col<>""), RANDARRAY(COUNTA(col))), 5)))
- 逻辑拆解:
FILTER(col, col<>""):过滤当前数据源列的所有非空内容,自动适配列的行数动态变化RANDARRAY(COUNTA(col)):生成与过滤后内容数量匹配的随机数数组,用于打乱内容顺序SORTBY(...):用随机数对过滤后的内容排序,实现无重复随机抽取TAKE(...,5):取排序后的前5项,确保每列刚好生成5个不重复内容BYCOL:遍历Options的每一列,对每列执行上述逻辑,最终溢出为完整的5x5宾果卡数组
方案二:单列独立溢出函数(自定义列对应关系)
如果需要指定宾果卡某列对应数据源的特定列(比如宾果卡B列对应Music列、I列对应Food & Drink列),可以给每列单独设置公式:
- 宾果卡B列首个单元格输入:
=TAKE(SORTBY(FILTER(Options[Music], Options[Music]<>"") , RANDARRAY(COUNTA(Options[Music]))),5)
- 宾果卡I列首个单元格输入:
=TAKE(SORTBY(FILTER(Options[Food & Drink], Options[Food & Drink]<>"") , RANDARRAY(COUNTA(Options[Food & Drink]))),5)
- 逻辑说明:和方案一的单列逻辑一致,单独指定数据源列,灵活性更高,适合列对应关系不按顺序的场景
对之前尝试公式的问题说明
- 第一个公式使用
RANDBETWEEN仅能生成单个随机值,无法自动溢出且无法保证唯一性,重复概率极高 - 第二个公式错误在于
FILTER(Options, Options[Food & Drink]<>"")返回整行数据,后续INDEX取列的逻辑不准确,且RANDARRAY参数使用错误,导致出现#REF!报错
内容的提问来源于stack exchange,提问作者thesquid
相关产品推荐
相关产品推荐

