如果我们有一个三级层次结构并且只需枚举“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显示了两级层次结构的简单情况。
我还带了一个帮助栏(尽管我个人厌恶),以显示每个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
最简单的方法是添加两个中间辅助列,第一个我们称之为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计数。