根据不同的单元格值创建字母数字列表

时间:2018-03-08 11:42:38

标签: excel vba excel-vba excel-formula

所以我有一组数据,大约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)根据各自的父条目填充每个子条目的相应索引(父级和子级都在同一列中)。注意:每个父项都有不同数量的子项。

3 个答案:

答案 0 :(得分:4)

没有VBA的可行。我将这个过程分成几列。公式如下:

enter image description here

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