Excel公式:将数据复制到另一工作表并跳过含0的行
提取不含0行的Excel公式方案
一、Excel 365/2021 版本(支持动态数组)
直接用FILTER函数一步搞定,结果自动填充且无空白行:
在新表的A1单元格输入公式:
=FILTER(Sheet1!A:Z, MMULT(--(Sheet1!A:Z<>0), SEQUENCE(COLUMNS(Sheet1!A:Z),,1,0))>0)
- 把
Sheet1!A:Z替换成你实际的原数据范围(比如原数据是A到D列就写Sheet1!A:D) - 逻辑说明:先把每行非0单元格转成1、0转成0,再计算每行的数值总和,总和大于0代表该行无0,
FILTER会自动提取这些符合条件的行
二、旧版Excel(无动态数组支持)
用INDEX+SMALL+IF组合公式,需按数组公式规则输入:
- 在新表A1单元格输入公式,输入完成后按
Ctrl+Shift+Enter确认(不要直接回车):
=INDEX(Sheet1!A:A, SMALL(IF(MMULT(--(Sheet1!$A:$Z<>0), TRANSPOSE(COLUMN(Sheet1!$A:$Z)^0))>0, ROW(Sheet1!$A:$Z), ""), ROW(A1)))
- 将A1的公式向右拖动到需要的列,再向下拖动到出现
#NUM!为止(出现该提示说明已提取完所有符合条件的行)
简化场景:仅判断某一列是否含0
如果只需要检查特定列(比如B列)是否有0,公式可以简化:
- 动态数组版:
=FILTER(Sheet1!A:Z, Sheet1!B:B<>0) - 旧版数组公式:
=INDEX(Sheet1!A:A, SMALL(IF(Sheet1!$B:$B<>0, ROW(Sheet1!$B:$B), ""), ROW(A1)))
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

