Excel中的分层自动编号(具有三个级别)

问题描述 投票:0回答:2

如果我们有一个三级层次结构并且只需枚举“B”(根据模式),但某些“C-”干扰“B”,那该怎么办?

问题:从给定列B获取列A结果。

A+  
B   1
B   2
С-  
B   3
A+  
B   1
С-  
B   2
A+  
С-  
B   1
B   2
B   3

附:该任务源于需要在Excel中枚举复杂的层次结构。

想象一下A - 1级; B - 2级; C - 级别3.(在上面的例子中有一些滥用逻辑,因为模式中的C-A之后,实际上通常不是这种情况)。

here显示了两级层次结构的简单情况。

excel
2个回答
1
投票

我还带了一个帮助栏(尽管我个人厌恶),以显示每个A +的行

把它放在C1:=ROW(A1)

把它放在C2:=IF(A2="A+",ROW(A2),C1)

它使用可扩展的范围和可重复的起点。向下拖动数据。

把它放在B2:=IF(OR(A2="C-",A2="A+"),"",IF(A1="A+",1,MAX(INDIRECT("B" & C2 & ":B" & ROW(A1)))+1))

向下拖动数据。

希望有所帮助。以下是我收到的结果:

A+      1
B   1   1
B   2   1
C-      1
B   3   1
A+      6
B   1   6
C-      6
B   2   6
A+      10
C-      10
B   1   10
B   2   10
B   3   10

2
投票

最简单的方法是添加两个中间辅助列,第一个我们称之为C列。在这里,我们只计算我们所在的“A +”,就像这样[从C2开始; C1被硬编码为1]:

=IF(A2="A+",A1+1,A1)

每当新行在A列中具有“A +”时,这将递增。

然后,列D将跟踪到目前为止达到的最高#,对于C列中的那次迭代[从D2开始; D1在1]处硬编码:

=IF(A2="A+",0,if(A2="B",B2,D1))

对于每个新的“A +”,这将重新开始为0,对于每个“B”,它将采用B列中显示的值。然后对于每个“C”,它将简单地重复上面一行中的值(前一个“B” “ 到达)。

最后你可以按照以下顺序排列[从E1开始]:

=IF(A1="B",B1,"")

这将显示“A +”或“C”的BLANK,如果列A =“B”,则显示B计数。

© www.soinside.com 2019 - 2024. All rights reserved.