是否有一个公式来随机化一列数据,使每个项目只保留一次(具有相同的项目)?
所以:
APPLES
PEARS
BERRIES
可能会出现
PEARS
BERRIES
APPLES
公式之间的Rand并不好,因为你可能得到两个'PEAR'。
答案 0 :(得分:1)
有一个新的"随机范围"选择范围后,在上下文菜单中可用的功能:
]
以下方法实现了pnuts的概念,但没有创建一个填充随机数的列:
=query({A2:A20, arrayformula(randbetween(0, 1e20 + row(A2:A20)))}, "select Col1 order by Col2", 0)
这里A2:A20是要置换的范围。 arrayformula
为每个生成一个随机整数。 query
按随机整数对数组进行排序,但不会将随机数放在电子表格中。
randbetween
的熵是64位,因此碰撞极不可能。即使两个随机数恰好相等,也不会产生重复; 排序任何列都不会这样做。它只表示相应的条目对将按原始顺序出现。
答案 1 :(得分:0)
在找到此帖子之前,我对user6655984采用了类似的方法。
RANDARRAY似乎是一个很好的解决方案。
我有类似的要求。基于公式的随机退货单,只有异想天开才拥有唯一记录的能力。
右键单击以随机化范围,这意味着我不需要用户交互,并且数据是动态的。
我将随机数内置到查询数据范围中。
我获得了查询的灵活性(可以轻松扩展范围,添加返回的列过滤条件等),我完全不必显示随机数,并且可以根据需要将其包装为UNIQUE,然后使用每次重新计算。
在A2:A列中有一些数据。
查看内联数据范围。 = {RANDARRAY(ROWS($ A $ 2:$ A)),$ A $ 2:$ A}
查询(包括重复项),过滤为空。 = QUERY({RANDARRAY(ROWS($ A $ 2:$ A)),$ A $ 2:$ A},“ SELECT Col2 WHERE COL2 <>” ORDER BY Col1“,0)
相同,但被唯一包裹。 = UNIQUE(QUERY({RANDARRAY(ROWS($ A $ 2:$ A)),$ A $ 2:$ A},“ SELECT Col2 WHERE COL2 <>” ORDER BY Col1“,0))
希望它对某人有帮助,即使几年后也是如此。 :)
马特