从列表中随机获取其中一个值。

列表随机取值

=INDEX(A:A, RANDBETWEEN(1, COUNTA(A:A)))

原理分析

先使用 COUNTA 函数将 A 列的内容进行记数,计算有多少的单元格。

再使用 RANDBETWEEN 函数生成随机数,因为 RANDBETWEEN 属于易失函数,在表格内修改任意一个单元格会引起所有公式重新计算,这样每次都可以随机的生成值。A 列的内容是从第一行开始的,那么最小值就是 1,最大值放入刚才 COUNTA 计算的值,刚好对应的就是第 10 行。使用 COUNTA 函数的好处是可以让数据变成动态的,在 A 列添加内容,COUNTA 函数会自动计算出 A 列的所有单元格的数量,如果用的是静态的数值,那么 A 列要添加或者删减内容的时候,就需要再次调整参数。

使用 INDEX 根据行偏移获取指定的内容。根据 A 列的内容获取偏移行的内容,将刚才写好的公式作为偏移的行数,这样就可以实现从列表中随机取一个值了。

列表根据条件随机取值

在 B 列中随机取值,并且 A 列包含文具。

公式

=INDEX(FILTER(B:B, A:A = "文具"), RANDBETWEEN(1, COUNTIF(A:A, "文具")))

原理分析

使用 COUNTIF 计算 A 列包含文具的单元格数量。

再使用 RANDBETWEEN 函数生成随机数,放入刚才 COUNTIF 计算的内容。

使用 FILTER 函数筛选出在 A 列包含文具对应的 B 列的内容。

最后使用 INDEX 函数计算偏移函数,将 FILTER 函数计算结果作为 INDEX 函数搜索的内容,再把 RANDBETWEEN 函数计算的结果作为偏移的行数。