Excel 如果列已包含某个值,则自动递增

Excel 如果列已包含某个值,则自动递增,excel,vba,Excel,Vba,我有一个关于如何在Excel中最好地完成自动增量的问题 在我的工作表中,我有两列-A列,它是我的ID,E列,它是我的工作流程(B-D列被隐藏以便于阅读)。“工作流”列是一个下拉列表,包含多个值 当前,“我的ID”列(A列)基于以下公式: (我的数据从第17行开始) =如果(E17=“”,”,E17&“-000-”&文本(行()-16,“000”)) 这对我来说很棘手。我会尽我所能解释清楚的 我想做的是根据a列中是否存在值,将我的公式(或者可能使用VBA?)更改为自动递增 如果A列第17行已经包

我有一个关于如何在Excel中最好地完成自动增量的问题

在我的工作表中,我有两列-A列,它是我的ID,E列,它是我的工作流程(B-D列被隐藏以便于阅读)。“工作流”列是一个下拉列表,包含多个值

当前,“我的ID”列(A列)基于以下公式: (我的数据从第17行开始)

=如果(E17=“”,”,E17&“-000-”&文本(行()-16,“000”))

这对我来说很棘手。我会尽我所能解释清楚的

我想做的是根据a列中是否存在值,将我的公式(或者可能使用VBA?)更改为自动递增

如果A列第17行已经包含WM-000-001,并且用户从E列(比如第19行)的下拉列表中选择WM选项,则A列将自动填充第19行的WM-000-002

我也一直试图在VBA中使用工作表_Change(ByVal Target作为Range)完成同样的事情,但仍然遇到了障碍,因为我不知道如何正确地编写公式

如果有一个更简单的方法来实现这一点,或者如果有人可以推动我在正确的方向,它将不胜感激

使用COUNTIF()进行编号:

=IF(E17="","",E17 & "-000-"& TEXT(COUNTIF($A$1:A16,E17&"-*")+1,"000"))

听起来像是关系数据库的工作。有什么解决办法吗?如果您试图在非关系数据库中创建关系数据库,那么一切都是解决办法。请记住,如果用于ID,使用这种公式可能会导致将来的错误,相反,为id as value创建一个静态id列,并为此公式创建一个静态id列,当您获得新id时,将其粘贴为静态id列中的值,这将在将来对您有所帮助,因为一个错误的条目可能会更新您所有行的所有id,并且任何带有id的链接公式都将被弄乱up@user7735684Excel不是为此而设计的。使用Excel作为关系数据库是注定要失败的。@user7735684请参见编辑,但请牢记其他人的说法,使用关系数据库会更好。虽然Excel可以做很多数据库所能做的事情,但用户很容易就把它搞糟了。@ScottCraner,非常感谢,我将与您进行对话,开始将数据移动到关系数据库。现在我知道Excel的局限性,我可以更好地教育他人@user7735684计算ID的最大问题是它是可变的,因此如果删除一行,现有记录的ID可能会更改,然后使用它们进行查找的任何内容现在都会拉错记录-然后添加/插入新记录,ID会再次更改,现在所有内容都已损坏,无法修复。或者一个用户进来,对数据进行排序,然后再次破坏所有内容。如果您得到它的合作,请设置SQL Server。如果没有,请将数据保存在Access数据库中(可以轻松处理不可变的ID),而不是Excel中。