答案1
您可以使用更多列来实现这一点。假设:
- 你用
=RAND()
数值填充 C 列, - 然后,使用以下函数(第 2 行的示例)对特定“区域”内的这些随机值进行排序(在上述情况下,范围为
B2:B12
,,):B13:B23
B24:B34
=RANK(C2, C$2:C$12)
- 有了排名后,您只需使用从右侧选择一个值即可
=OFFSET($F$2, C2-1, 0)
- 它将选择C2-1
从 向下的行和从 向右的 0 列的值F2
。由于C2-1
可以等于 0 或更多(最多为一个排名的大小),它将从 F 列的值列表中选择一个唯一值。请注意此处的限制:左侧每个排名的大小必须等于右侧要选择的元素的大小。
请注意,以上引用是针对第 2 行的。如果某个值处于固定位置,则它已$
用于固定在特定行上。对于其他行,您应该能够从第 2 行向下填充(下文中描述的“区域”除外)。
要简单地使用函数拖动列的内容RANK
,您必须向INDIRECT
函数提供包含当前行的“区域”的计算范围(我将使用ROW
和FLOOR
计算行的“区域 ID”,从 0 开始,然后通过将范围 ID 与其大小相乘来计算范围的起点和终点,最后加 1 将所有内容移动到标题行下方)。我希望您知道如何连接提供以下内容的文本INDIRECT
:要生成 $F$12:$F$13,单元格 Z1 中的值为 12,单元格 Z2 中的值为 13,您需要使用换行文本''
并使用以下方式连接来自单元格的动态值&
:='$F$'&Z1&':$F$'&Z2