具有过滤行和数组公式的结构化引用表公式。新要求

时间:2019-04-22 18:00:57

标签: excel excel-formula

我需要解决一些我无法解决的新要求:

没有过滤器 enter image description here

[#ID] ->行计数器

[值] ->只是正数和负数的小节

[颜色] ->只是分类字段

[负数] ->当值列为负数时为1,当正数并累积负数时为0

公式

[#ID] = ROW()-ROW(['# ID])+1
[negative] = IF([@['# ID]]=1,IF([@value]<0,1,0),IF([@value]<0,1+OFFSET([@negative],-1,0)),0))

在过滤某些行时如何保持此功能正常工作?我想要最大负条纹(数组公式)以及[负]和[ID]列计算顺序并在可见行上条纹。这是预期的结果:

带有过滤器

enter image description here

2 个答案:

答案 0 :(得分:1)

假设表格位于B6:E18

尝试以下公式:

在[#ID]字段中:

 = -1 + SUBTOTAL( 3, $D$6:$D7 )

字段[负]:

 = IF( [@value] >= 0, 0,
 IF( [@['# ID]] = 1, 1,
 SUM( 1, INDEX( [negative], MATCH( -1 + [@['# ID]], ['# ID], 0 ) ) ) ) )

C2处的最大负条纹(lo.Data是Table的名称)

 =MAX( lo.Data[negative] )

enter image description here

enter image description here

建议查看以下页面,以获取有关所使用功能的其他信息:
Excel functions (alphabetical)
SUBTOTAL function
INDEX function
MATCH function

答案 1 :(得分:1)

添加另一个IF,以查看该行是否被隐藏:

=IF(SUBTOTAL(3,[@Value])=0,..

如果隐藏则返回TRUE,否则返回FALSE。

在IF的TRUE中,我们使用上面的值:

=IF(SUBTOTAL(3,[@Value])=0,OFFSET([@Negative],-1,0),...

否则,我们将使用您当前的公式:

=IF(SUBTOTAL(3,[@Value])=0,OFFSET([@Negative],-1,0),IF([@ID]=1,IF([@Value]<0,1,0),IF([@Value]<0,1+OFFSET([@Negative],-1,0),0)))

但是当拟合数据的第一个值为负数时,这将出错,因此我们需要使用IFERROR捕获它:

=IFERROR(IF(SUBTOTAL(3,[@Value])=0,OFFSET([@Negative],-1,0),IF([@ID]=1,IF([@Value]<0,1,0),IF([@Value]<0,1+OFFSET([@Negative],-1,0),0))),1)

![enter image description here


如果您还希望ID使用过滤器重新编号,请使用此ID:

=IFERROR(IF(SUBTOTAL(3,[@Value])=0,OFFSET([@ID],-1,0),1+OFFSET([@ID],-1,0)),1)

enter image description here