如何创建一个字段,使其在表中输入新记录时自动生成唯一的编号?
我在 B 列中有一串数字。我希望 A 列中的数字自动列为 1、2、3、4、.....
但
当我插入行以便可以在 B 列添加其他数字时,我希望 A 列能够自动更正自身并自动使用连续数字 1、2、3、4、5、6…… 更新 A 列中的新空单元格。
是否有某种条件格式可供我使用?公式不起作用,因为 A 列中的新空单元格不会自动填充。
答案1
Excel 是什么版本?2007 及更高版本可以使用 Excel 表格。所有公式和格式将自动应用于新行。
使用公式
=行()
创建一个唯一的号码。
然后在第 3 行上方插入一个新行,您将看到:
如果您希望表中的第一个数据行是 1,而不是 2,请使用
=行()-1
在 Excel 2003 中,您可以使用列表。我忘记了 2003 之前的哪些版本支持列表,但如果您使用的是 2003 之前的版本,您可能还是要考虑升级。公式是一样的。
前:
插入新行后:
答案2
没有(让我们面对现实,在 Excel 中添加钩子是一个巨大的安全风险,通常不值得这么做)。但是,您可以通过填写比您在电子表格上合理使用的更多的单元格来相当接近。有关详细信息,请参见此处超级用户问题。只需用您提到的公式填充第一个单元格,然后让 VBA 代码处理其余部分。
答案3
这是做什么用的?如果是用于数据库,mysql 提供了每次输入新记录时生成唯一编号的功能。或者您可以使用具有类似功能的 Microsoft Access。
答案4
问题现在出现在 2021 年,因此这里是针对和Related
版本的更新解决方案:Spill
SEQUENCE()
=IF(B1<>"",SEQUENCE(COUNTA(B1:B100000),1),"")
它只是最基本的部分,可以通过多种方式进行“修饰”。COUNTA()
inside的使用SEQUENCE()
就是该过程的一个例子。
照原样,它必须在没有跳过行和没有多行条目的假设下使用。请注意,,""
如果测试条件为,则末尾的结果为FALSE
:这不是书面上需要的,但我包括它是因为许多人可能没有抓住我的观点,因为没有任何内容可以指出。原因是通过使用B1
而不是像范围B1:B100000
或动态范围(可能包含 B 列中的单元格多于其中的条目),它永远不会测试任何可能未通过测试的单元格。(甚至可以使用该FALSE
子句在公式中显示一个短语,该短语永远不会是真正的结果,而是作为公式中的“注释”。但如果是我的电子表格,我会简单地将其省略。)
然后它像任何自动增量一样工作。
您还可以将其与文本或普通数字格式文本添加项相结合,以创建更具创意的自动递增。有很多方法可以修改、优化和扩展它,而无需任何条件格式。
最后一点是,插入一行最初似乎不会调整数字,但在 B 列单元格中输入内容时,数字就会调整。因此,它实现了问题中要求的自动递增,并且确实成功地做到了发帖人的评论所绝望的事情。删除一行“立即”生效,因为它会在同一操作中删除 B 列条目,因此动态部分会在同一时刻更新。