You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按相同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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 07:45:51