横向排列带对应概率的单元格随机选取方案求助(不可新增行)
按概率随机选取横向排列的姓名
适用Excel 365/2021及以上版本的公式
直接在数据后方的空白单元格(比如E2)输入以下公式:
=LET( names, FILTER($A2:$ZZ2, MOD(COLUMN($A2:$ZZ2)-COLUMN($A2)+1,2)=1), probs, FILTER($B2:$ZZ2, MOD(COLUMN($B2:$ZZ2)-COLUMN($B2)+1,2)=0), cum_probs, SCAN(0, probs, LAMBDA(a,b,a+b)), INDEX(names, MATCH(RAND(), cum_probs, 1)) )
公式说明:
names:自动筛选当前行中所有奇数位置的单元格(即你的姓名列,比如A2、C2、E2...)probs:自动筛选当前行中所有偶数位置的单元格(即对应的概率列,比如B2、D2、F2...)cum_probs:计算概率的累计和,用于确定随机数的落地区间INDEX+MATCH:用RAND()生成0-1的随机数,匹配到对应的累计概率区间,返回对应的姓名
旧版Excel兼容公式
如果用的是没有LET/FILTER/SCAN的旧版Excel,用以下数组公式(输入后按Ctrl+Shift+Enter确认):
=INDEX($A2:$ZZ2,1,MATCH(RAND(),SUBTOTAL(9,OFFSET($B2,0,0,1,ROW(INDIRECT("1:"&INT(COLUMNS($A2:$ZZ2)/2)))*2)),1)*2-1)
注意事项:
- 调整公式中的
$A2:$ZZ2范围,匹配你实际的数据列数,避免包含过多空白单元格 - 确保所有概率的总和为1,否则随机选取的结果会不符合预期
- 每次按
F9刷新工作表,公式会重新生成随机结果,完全符合设定的概率分布
内容的提问来源于stack exchange,提问作者Samy Somy
相关产品推荐
相关产品推荐

