单元格更改值时Excel自动按01递增id

单元格更改值时Excel自动按01递增id,excel,increment,Excel,Increment,我有一个有三列的文件。ID为空,Name有一些名称,PARENT_ID存储名称的父ID 我要做的是在列ID处获取父ID并添加一个两位数,该数字将递增01。例如,我们有10只父母id为1的猫。我想在列ID处获取父ID“1”,然后为第一个类别添加“01”,为第二个类别添加“02”,依此类推。因此,在列ID处,我将为每个cat设置一个自动递增的值101102,…110。 然后狗开始,所以它将采用父id,即“2”,并再次开始为每个狗添加递增的值201202。。。等 然后是鱼301302 下面是我正在尝试

我有一个有三列的文件。ID为空,Name有一些名称,PARENT_ID存储名称的父ID

我要做的是在列ID处获取父ID并添加一个两位数,该数字将递增01。例如,我们有10只父母id为1的猫。我想在列ID处获取父ID“1”,然后为第一个类别添加“01”,为第二个类别添加“02”,依此类推。因此,在列ID处,我将为每个cat设置一个自动递增的值101102,…110。 然后狗开始,所以它将采用父id,即“2”,并再次开始为每个狗添加递增的值201202。。。等 然后是鱼301302

下面是我正在尝试做的一个例子

ID   NAME   PARENT_ID
101  cat    1
102  cat1   1
103  cat2   1
104  cat3   1
105  cat4   1
106  cat5   1
107  cat6   1
108  cat7   1
109  cat8   1
110  cat9   1
111  cat10  1
201  dog    2
202  dog1   2
203  dog2   2
204  dog3   2
205  dog4   2
206  dog5   2
301  fish   3
302  fish   3
这个列名不重要,我只是把它放在这里让你更好地理解

我不熟悉VisualBasic,我试图用公式来实现这一点,但运气不佳


谢谢您的帮助。

将其放入A2并复制/向下拖动:

=IF(C2<>C1,C2*100+1,A1+1)
=IF(C2C1,C2*100+1,A1+1)

将其放入A2并复制/向下拖动:

=IF(C2<>C1,C2*100+1,A1+1)
=IF(C2C1,C2*100+1,A1+1)

将下面的公式粘贴在“A2”
=C2&RIGHT(“00”&COUNTIF($C$1:C2,C2),2)


然后向下拖动公式。如果您的数据有10条以上的唯一记录,则将其设置为
=C2&RIGHT(“00”和COUNTIF($C$1:C2,C2),3)
将以下公式粘贴到“A2”
=C2&RIGHT(“00”和COUNTIF($C$1:C2,C2)中


然后向下拖动公式。如果您的数据有10条以上的唯一记录,则将其设置为
=C2&RIGHT(“00”&COUNTIF($C$1:C2,C2),3)
不是VBA方法,而是公式方法--如果这与您正在寻找的类似:

 Row  A    B      C          D            E          F
 1    ID   NAME   PARENT_ID  RunningName  RunningID  NewID
 2    101  cat            1  cat                  0  cat
 3    102  cat1           1  cat                  1  cat01
 4    103  cat2           1  cat                  2  cat02
 5    104  cat3           1  cat                  3  cat03
 6    105  cat4           1  cat                  4  cat04
 7    106  cat5           1  cat                  5  cat05
 8    107  cat6           1  cat                  6  cat06
 9    108  cat7           1  cat                  7  cat07
10    109  cat8           1  cat                  8  cat08
11    110  cat9           1  cat                  9  cat09
12    111  cat10          1  cat                 10  cat10
13    201  dog            2  dog                  0  dog
14    202  dog1           2  dog                  1  dog01
15    203  dog2           2  dog                  2  dog02
16    204  dog3           2  dog                  3  dog03
17    205  dog4           2  dog                  4  dog04
18    206  dog5           2  dog                  5  dog05
19    301  fish           3  fish                 0  fish
20    302  fish           3  fish                 1  fish01
…然后我使用了以下公式:

D2:  =if(a2="","",if(sum(C2)<>sum(C1),trim(B2),trim(D1)))
E2:  =if(a2="","",if(sum(C2)<>sum(C1),0,sum(E1)+1))
F2:  =if(a2="","",trim(D2)&if(sum(E2)=0,"",text(E2,"00")))
D2:=if(a2=”,“”,if(sum(C2)sum(C1),trim(B2),trim(D1)))
E2:=如果(a2=”,“”,如果(和(C2)和(C1),0,和(E1)+1))
F2:=如果(a2=“”,”,修剪(D2)和如果(总和(E2)=0“,文本(E2,“00”))
然后我把这些细胞复制到我想去的地方。您可以将“运行”列设置为非常浅的灰色文本颜色,以使它们不会分散用户的注意力


希望这有助于激励您制定一个适合您的解决方案。

不是VBA方法,而是公式方法——如果这与您所寻找的类似:

 Row  A    B      C          D            E          F
 1    ID   NAME   PARENT_ID  RunningName  RunningID  NewID
 2    101  cat            1  cat                  0  cat
 3    102  cat1           1  cat                  1  cat01
 4    103  cat2           1  cat                  2  cat02
 5    104  cat3           1  cat                  3  cat03
 6    105  cat4           1  cat                  4  cat04
 7    106  cat5           1  cat                  5  cat05
 8    107  cat6           1  cat                  6  cat06
 9    108  cat7           1  cat                  7  cat07
10    109  cat8           1  cat                  8  cat08
11    110  cat9           1  cat                  9  cat09
12    111  cat10          1  cat                 10  cat10
13    201  dog            2  dog                  0  dog
14    202  dog1           2  dog                  1  dog01
15    203  dog2           2  dog                  2  dog02
16    204  dog3           2  dog                  3  dog03
17    205  dog4           2  dog                  4  dog04
18    206  dog5           2  dog                  5  dog05
19    301  fish           3  fish                 0  fish
20    302  fish           3  fish                 1  fish01
…然后我使用了以下公式:

D2:  =if(a2="","",if(sum(C2)<>sum(C1),trim(B2),trim(D1)))
E2:  =if(a2="","",if(sum(C2)<>sum(C1),0,sum(E1)+1))
F2:  =if(a2="","",trim(D2)&if(sum(E2)=0,"",text(E2,"00")))
D2:=if(a2=”,“”,if(sum(C2)sum(C1),trim(B2),trim(D1)))
E2:=如果(a2=”,“”,如果(和(C2)和(C1),0,和(E1)+1))
F2:=如果(a2=“”,”,修剪(D2)和如果(总和(E2)=0“,文本(E2,“00”))
然后我把这些细胞复制到我想去的地方。您可以将“运行”列设置为非常浅的灰色文本颜色,以使它们不会分散用户的注意力



希望这能帮助您制定一个适合您的解决方案。

我会为类别(猫、狗等)添加一列,然后检查当前类别是否与前一行相同,然后使用前一行的父id,否则将1添加到前一行的父id。如果你想避免额外的列,那么抓取id并除以100,然后将其覆盖。我会为类别(猫、狗等)添加一列,然后检查当前类别是否与前一行相同,然后使用前一行的父\u id,否则将1添加到前一行的父\u id。如果要避免出现额外的列,请获取id并除以100,然后将其降低。即使您的父id不是数字,这也会起作用。您对我的公式的规则是正确的。不过,我已经学会了根据提供的数据给出最简单的答案。这是一个很好的答案。感谢您的帮助,对于非数字的父id,我将保留您建议的公式。即使您的父id不是数字,这也会起作用。您对我的公式的规则是正确的。不过,我已经学会了根据提供的数据给出最简单的答案。这是一个很好的答案。感谢您的帮助,我将保留您为非数字父ID的情况建议的公式。这还要求在应用此公式之前对数据进行排序。这非常有效!我刚把*100改成*1000,因为有些名字超过了100。谢谢你的帮助!生成ID后,您需要复制列并粘贴值以删除公式,否则ID将更改,您不希望发生这种情况。是的,我知道,粘贴特殊->值我的朋友gs用了这个方法后,我们稍微改了适合我们自己,非常好用啊,非常感谢,我们用的是:=文本(如果(C96=C97,E96+1,1),“000”)。这也要求在应用此公式之前对数据进行排序。这非常有效!我刚把*100改成*1000,因为有些名字超过了100。谢谢你的帮助!生成ID后,您需要复制列并粘贴值以删除公式,否则ID将更改,您不希望发生这种情况。是的,我知道,粘贴特殊->值我的朋友gs用了这个方法后,我们稍微改了适合我们自己,非常好用啊,非常感谢,我们用的是:=文本(如果(C96=C97,E96+1,1),“000”)。LOL在看到其他解决方案后,我不得不说我误解了你的意图。看了其他的解决方案后,我不得不说我误解了你的意图。这就是生活。