如何在Excel两个表格中随机选数值?RAND()/RANDBETWEEN()函数无效
从两个Excel表格随机选取数值的解决方案
嗨,我来帮你搞定这个问题!你说用RAND()或RANDBETWEEN()搞不定,应该是没把这俩函数和查找类函数结合起来用对吧?我分两种常见场景给你具体的解决办法:
场景1:按指定年份随机选对应成本
假设你的表格一放在A1:B11(A列是年份,B列是成本),表格二放在D1:E11(D列年份,E列成本)。如果你想先输入一个年份(比如在单元格F2),然后随机从两个表格里挑这个年份对应的成本值(要是年份只在一个表格里有,就直接返回那个值),可以用这个公式:
=IFERROR(INDEX(CHOOSE(RANDBETWEEN(1,2),B:B,E:E),MATCH(F2,CHOOSE(RANDBETWEEN(1,2),A:A,D:D),0)),IFERROR(VLOOKUP(F2,A:B,2,FALSE),VLOOKUP(F2,D:E,2,FALSE)))
简单解释下逻辑:
RANDBETWEEN(1,2)先随机选1或2,对应选表格一还是表格二- 用
CHOOSE配合这个随机数,选定要找的年份列和成本列,再用MATCH找年份的位置,INDEX取出对应的成本 - 外层的
IFERROR是兜底:要是随机选的表格里没这个年份,就自动去另一个表格找(两个都没有的话会返回错误,你可以根据自己需求改返回内容)
场景2:随机选两个表格里的任意一个成本值
如果不管年份,就是想从两个表格的所有成本里瞎选一个,那公式更简单:
假设表格一的成本在B2:B11,表格二的在E2:E11,直接用:
=IF(RANDBETWEEN(1,2)=1,INDEX(B2:B11,RANDBETWEEN(1,10)),INDEX(E2:E11,RANDBETWEEN(1,10)))
要是以后两个表格的行数不一样(比如表格一10行,表格二8行),可以用更灵活的版本:
=LET(table_num,RANDBETWEEN(1,2),target_table,CHOOSE(table_num,B2:B11,E2:E11),INDEX(target_table,RANDBETWEEN(1,ROWS(target_table))))
这个用LET函数把变量定义清楚,先随机选表格,再随机选该表格里的某一行成本,不管表格行数多少都能用。
小提醒
- 因为用了随机函数,每次刷新工作表(比如按F9、输入新数据),数值都会变。要是想固定选出来的值,复制单元格后右键「粘贴为数值」就行。
- 确保年份列是纯数字格式,别带文本格式,不然查找函数可能找不到对应值哦。
内容的提问来源于stack exchange,提问作者K.B




