如何按相同ID随机查找对应值?能否实现随机Vlookup()?
实现按相同ID随机查找对应值的方案
原生的VLOOKUP()函数只会返回第一个匹配的结果,无法直接实现随机返回同ID下的多个对应值。不过可以通过组合Excel/Google Sheets的函数来实现这个需求,以下是具体方法:
方法1:数组公式(兼容多数Excel版本)
假设你的数据在A列(Name)和B列(Product),要查找的目标ID放在D1单元格,使用以下公式:
=INDEX(B:B, SMALL(IF(A:A=D1, ROW(A:A)), RANDBETWEEN(1, COUNTIF(A:A, D1))))
- 旧版Excel需要按 Ctrl+Shift+Enter 作为数组公式输入;Excel 365及以上版本直接回车即可。
- 各部分作用:
COUNTIF(A:A, D1):统计目标ID的匹配次数(比如John对应2次)RANDBETWEEN(1, ...):生成1到匹配次数之间的随机整数IF(A:A=D1, ROW(A:A)):筛选出所有匹配目标ID的行号SMALL(..., 随机数):从筛选出的行号中选取第N个(N为随机数)INDEX(B:B, 行号):返回对应行的Product值
方法2:动态数组公式(Excel 365/Google Sheets)
用FILTER()先筛选出所有匹配的结果,再随机选取一个,公式更直观:
=INDEX(FILTER(B:B, A:A=D1), RANDBETWEEN(1, COUNTA(FILTER(B:B, A:A=D1))))
- 无需特殊输入,直接回车即可生效。
- 如果需要处理无匹配的情况,可嵌套
IFERROR()避免报错:=IFERROR(INDEX(FILTER(B:B, A:A=D1), RANDBETWEEN(1, COUNTA(FILTER(B:B, A:A=D1)))), "无匹配结果")
示例效果
当D1单元格输入John时,公式会随机返回A或D;输入Mary时,随机返回B或E,每次刷新工作表(按F9)会重新生成随机结果。
内容的提问来源于stack exchange,提问作者tiredaccountant
相关产品推荐
相关产品推荐

