随机选择另一列的一列子集中的值
我可以用来随机选择 A 列中与给定 B 值关联的值的最简单公式是什么。因此,在下表中,我希望随机选择 A,其中 B = 3。因此,我在第 1 行 (5.4) 和第 3 行 (4.2) 之间随机选择。请注意,该表可以任意大。
A B
1 5.4 3
2 2.3 1
3 4.2 3
4 9.2 2
... ...
What is the simplest formula I can use to randomly choose a value in column A that is associated with a given B value. So in the table below, I'm looking to randomly choose an A where B = 3. So I'm randomly choosing between row 1 (5.4) and row 3 (4.2). Note that this table can be arbitrarily large.
A B
1 5.4 3
2 2.3 1
3 4.2 3
4 9.2 2
... ...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
从概念上讲,您可以通过多种方式完成此操作,但这里有一种 (VBA),您可以使用一组可能的选择,然后从该列表中获取随机元素:
更新:
下面是一个代码示例,它循环遍历指定数字的范围,如果找到它,则会将 A 列值添加到可能结果的数组中。然后生成一个随机数并用于从该列表返回一个随机值。
优化:
这是同一功能的更灵活的版本。它需要 3 个参数 - 您想要查看的范围、您想要查找的内容以及您想要从中获得随机结果的单元格的偏移值。它还使用变体,因此您可以搜索文本或数字。所以在你的情况下,你会写:
这是代码:
Conceptually you could do it a number of ways, but here's one (VBA) where you'd use an array of possible choices then get a random element from that list:
UPDATE:
Here is a code example that loops through the range for the number you specify, and if it find it, it adds the A column value to an array of possible results. Then a random number is generated and used to return a random value from that list.
Optimization:
Here is a more flexible version of the same function. It takes 3 paramteres - the range you want to look in, what you want to find, and the offset value of the cell you want a random result from. It also uses Variants, so you can search for text or numbers. So in your case, you'd write:
Here is the code:
我知道老问题......但如果您仍然感兴趣,这里有一个公式解决方案,假设
A2:B10
中的数据=INDEX(A2:A10,SMALL(IF(B2: B10=3,ROW(A2:A10)-ROW(A2)+1),RANDBETWEEN(1,COUNTIF(B2:B10,3))))
返回 #NUM!如果 B2:B10 中没有 3,则会出现错误......或者将其括在 IFERROR 中以在这种情况下返回您选择的文本......
Old question I know......but if you're still interested here's a formula solution assuming data in
A2:B10
=INDEX(A2:A10,SMALL(IF(B2:B10=3,ROW(A2:A10)-ROW(A2)+1),RANDBETWEEN(1,COUNTIF(B2:B10,3))))
returns #NUM! error if there are no 3s in B2:B10.....or enclose in IFERROR to return text of your choosing in that case....