自动生成唯一编号,无重复

自动生成唯一编号,无重复

如果其中一列固定为我想要的数字,而另一列随机生成第一列中没有的数字,我该如何自动生成数字?我不想有任何重复。

例如:我需要自动生成 1-10 到 2 列。A 列(固定数字)

1
3
4
5
6

B 列(随机数)

生成未出现在 A 列中的数据?

B 列应该有 2,7,8,9,10。

通过这个公式,我能够为 1 - 10 中的 2 列生成唯一的数字,但是现在如果我想修复第一列,我应该如何编码以确保第二列中的数字与 A 列没有重复?

=IF(ROW()-ROW(P$3)+1>$A$3/2,"",RANK(OFFSET($B$3,ROW()-ROW(P$3)+(COLUMN()-COLUMN($P3))*($A$3/2),),$B$3:INDEX($B$3:$B$1002,$A$3)))

这两列的目的是让我对当前会话和下一个会话进行比较。我原本想生成随机数并使用 INDEX 来检索名称,但首先我需要在单独的行中获取数字,并且不能获取任何重复项。

Col B/C/D是人员信息。

Col A,我可以手动输入会影响 Col L/M/N 的人员总数。如果我有 10 名人员,则 L 列将根据 5 个组进行更改,Col M 和 N 也会相应更改。

现在,使用我的公式,我可以根据我在 A 列中插入的内容(20)自动随机排列 M 列和 N 列的数字。这可以更改。

我遇到的问题是,对 M 上的数字进行随机排序,而不能使 N 列上的​​数字重复。

随机/随机播放 10 个数字只是示例。列表可以减少到 50 多个。是否可以自动生成剩余数字,而不必手动输入?

检查我的截图

答案1

首先,您需要将 B 列的随机数写入新的 H 列中,例如 (H1=2、H3=9...H5=7),将 A 列保留为您选择的数字,将 B 列保留为生成的数字。
在 I1 中写入 =Rand() 并将其向下拖动以形成 5 行,其中随机数 <0,
在 J1 中写入以下公式以对 I 列的 Rand() 数字进行排序:
=RANK(I1,$I$1:$I$5,0)
将其拖到 J5,您将得到 1 到 5 之间的 5 个数字,
在 B1 中写入:
=OFFSET($H$1,J1-1,0)
并将其向下拖到 B5,您将随机获得剩余的 5 个唯一数字。
更新
您可以将公式 Rank 和 Offset 组合在一起,并在 B1 中写入:
`=OFFSET($H$1,RANK(I1,$I$1:$I$5,0)-1,0)'
请注意,Rank 作用于 I 列中的 Rand(),而不是作用于数字所在的 H。

在此处输入图片描述

相关内容