Excel中

时间:2015-08-31 17:22:29

标签: excel

如果我们有一个三级层次结构并且只需枚举" 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

2 个答案:

答案 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