我需要解决一些我无法解决的新要求:
[#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]列计算顺序并在可见行上条纹。这是预期的结果:
带有过滤器
答案 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] )
建议查看以下页面,以获取有关所使用功能的其他信息:
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)
如果您还希望ID使用过滤器重新编号,请使用此ID:
=IFERROR(IF(SUBTOTAL(3,[@Value])=0,OFFSET([@ID],-1,0),1+OFFSET([@ID],-1,0)),1)