单元格更改值时Excel自动按01递增id
我有一个有三列的文件。ID为空,Name有一些名称,PARENT_ID存储名称的父ID 我要做的是在列ID处获取父ID并添加一个两位数,该数字将递增01。例如,我们有10只父母id为1的猫。我想在列ID处获取父ID“1”,然后为第一个类别添加“01”,为第二个类别添加“02”,依此类推。因此,在列ID处,我将为每个cat设置一个自动递增的值101102,…110。 然后狗开始,所以它将采用父id,即“2”,并再次开始为每个狗添加递增的值201202。。。等 然后是鱼301302 下面是我正在尝试做的一个例子单元格更改值时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
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在看到其他解决方案后,我不得不说我误解了你的意图。看了其他的解决方案后,我不得不说我误解了你的意图。这就是生活。