枚举 google sheet 中的行

Enumerate rows in google sheet

我需要枚举 google sheet 中的行以用作简单的唯一 ID。当我添加新行时,我希望为它分配下一个未使用的数字。问题是我需要能够删除一行,并且不能更改任何 ID。因此,如果我枚举了第 1 行到第 5 行,并且删除了第 3 行,我希望得到:

DATA   ID
A      1
B      2
D      4
E      5

我可以轻松地创建一个为每一行枚举数字的函数,但我不知道如何使该数字在第一次创建后不可变。另外,如果我要删除最后一行(上面的 ID 5)然后添加另一行,我不知道如何确保新行的 ID 为 6 而不是新的 5。谢谢。

在我的例子中,我想要的只是确保拥有不会重复的唯一数字,即使添加或减去行或数据也是如此。所以我只用了这个公式。在我的例子中,我只有几百行,但你可以将“1000”增加到任何大于你的总行数的十的幂:

=int((now() - DATE(2021, 7, 19)) * 86400) * 1000 + row()

正如@MattKing 所指出的,如果您在此函数之前插入一列,或者甚至只是重新打开电子表格,这将重新计算。因此,您可以将单元格调整为自我引用。它不是真正的递归,但你必须打开“迭代计算”才能工作。前往:

文件 -> 电子表格设置 -> 计算 -> 将“迭代计算”设置为“开”。然后为了安全起见,您可以将“最大迭代次数”设置为 1,因为这实际上不是递归的。然后使用此单元格公式,但将 VALUE() 函数(下例中的 AL11)中引用的单元格的两次出现更改为它所在的任何单元格:

=IF(VALUE(AL11) > 0, AL11, INT((NOW() - DATE(2021, 7, 19)) * 86400) * 1000 + ROW())