excel中有很多类似问题,其实只需要添加一个辅助列,问题就迎刃而解了。
既然你要把结果显示在C、D两列里,可以把E、F列作为辅助列。
假设你的表第一行是标题,数据从第二行开始,则在E2中输入公式 =IF(A2<>0,A2,E1)
F2中输入公式 =IF(A2<>0,A2,F1)
然后在C2中输入公式 =IF(A2=0,row(E2),"")
D2中输入公式 =IF(A2=0,F2,"")
C2到F2选中,向下复制粘贴就可以了
C1
=IF(A1<>0,"",MAX((A$1:A1<>0)*ROW(A$1:A1))) 按CTRL+SHIFT+ENTER结束公式输入,下拉填充.
D1
=IF(A1<>0,"",INDIRECT(ADDRESS(MAX((A$1:A1<>0)*ROW(A$1:A1)),2))) 按CTRL+SHIFT+ENTER结束公式输入,下拉填充.
在c1输入公式:
=if(a1,"",if(iserror(lookup(1,0/a$1:a1,row($1:1))),"",lookup(1,0/a$1:a1,row($1:1))))
在d1输入公式:
=if(a1,"",if(iserror(lookup(1,0/a$1:a1,b$1:b1)),"",lookup(1,0/a$1:a1,b$1:b1)))
选择c1:d1,下拉填充
在C列作函数,使在A列所有为0的行的C列里,显示A列中上一个不为0的行的行数,这个看明白了,而原本不为0的行的C列则不显示,是什么意思?
c2=if(a2<>0,"",lookup(1,0/(a$1:a1<>0)),row(a$1:a1))),下拉
d2=if(a2<>0,"",lookup(1,0/(a$1:a1<>0)),b $1:b1))),下拉