所以我有一组数据,大约120个父母,每个父母有8-16个子数据条目。每个父母都按编号索引,我试图让每个孩子都有父母编号,后面跟一个字母字符,例如
A B
58 Parent entry
58A Child 1
58B Child 2
目前看起来像(子条目索引单元格为空):
A B
58 Parent entry
Child entry 1
Child entry 2
我将如何自动(我猜是通过VBA)根据各自的父条目填充每个子条目的相应索引(父级和子级都在同一列中)。注意:每个父项都有不同数量的子项。
答案 0 :(得分:4)
没有VBA的可行。我将这个过程分成几列。公式如下:
B2:=IF(ISERROR(SEARCH(":",A2)),"Child","Parent")
C2:=IF(B2="Parent",LEFT(A2,SEARCH(":",A2)-1),C1)
D2:=IF(B2="Child",C2&CHAR(63+COUNTIF($C$2:C2,C2)),C2)
上述D2公式的要求解释:
COUNTIF($C$2:C2,C2)
计算在C 列中找到C2的值到当前行的次数(当前是具有公式的行)
所以举个例子。 D4
可以从C2:C4
计算三个58,同样D8
可以计算C2:C8
中的七个58个。
再次考虑D4
,它计算三个58,因此公式等同于:
=IF(B4="Child",C4&CHAR(63+3),C4)
CHAR(65)
返回A
,最多返回CHAR(90)
Z
。因此,在这种情况下,CHAR(66)
返回B
。因此:
=IF(B4="Child",C4&"B",C4)
答案 1 :(得分:0)
在@CallumDA答案的基础上,使用与他最终使用的公式相同的格式:
B2:=IF(NOT(ISBLANK(A7)),"Total",IF(ISERROR(SEARCH("",A6)),"Child","Parent"))
C2:=IF(B6="Total","",IF(B6="Parent",A6,C5))
D2:=IF(B6="Child",C6&CHAR(63+COUNTIF($C$6:C6,C6)),C6)
答案 2 :(得分:0)
假设您的数据从单元格A1开始
Sub AddParentNumber()
With Range("A1").CurrentRegion.Resize(, 1)
.AutoFilter Field:=1, Criteria1:="="
With .SpecialCells(xlCellTypeBlanks)
.FormulaR1C1 = "= concatenate(OFFSET(R1C,MATCH(1,R1C:R[-1]C,-1)-1,0), UNICHAR(64+row()-MATCH(1,R1C:R[-1]C,-1)))"
.value = .value
End With
.Parent.AutoFilterMode = False
End With
End Sub