如果我们有一个三级层次结构并且只需枚举" B" s(根据模式),但有些" C - " s会干扰&# 34; B" S
问题:从给定列B
获取列A
结果。
A+
B 1
B 2
С-
B 3
A+
B 1
С-
B 2
A+
С-
B 1
B 2
B 3
P.S。该任务源于需要在Excel中枚举复杂的层次结构。
想象一下A
- 等级1; B
- 第2级; C
- 级别3.(上面示例中的一些滥用逻辑,因为C-
中的A
位于// Silk4J
DomElement column = row.getCell(i);
if (???) {
// TD case
} else {
// TH case
}
之后,实际上通常不是这种情况。)
显示了两级层次结构的简单情况here。
答案 0 :(得分: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 +"以及每个" B"这将重新开始。它将采用B列中显示的值。然后对于每个" C",它将简单地重复上面一行中的值(前一个" B"到达)。
最后你可以进行排序,如下[从E1开始]:
=IF(A1="B",B1,"")
这将显示BLANK" A +"或者" C",如果列A =" B"将显示B计数。
答案 1 :(得分: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