如何依据主工作表D列TRUE值填充子表数据且无空白行?
提取主表中D列为TRUE的行到子表(无空白行)
方法1:使用FILTER函数(推荐,适用于Excel 365/2021及以上版本)
在子表的A1单元格输入以下公式,回车后会自动提取所有符合条件的行,且不会留下空白行:
=FILTER(Sheet5!A:C, Sheet5!D:D=TRUE, "无符合条件的数据")
- 第一个参数
Sheet5!A:C指定要提取的前三列数据范围 - 第二个参数
Sheet5!D:D=TRUE是筛选条件,只保留D列为TRUE的行 - 第三个参数可选,当没有符合条件的行时显示提示文本,可根据需要修改或删除
方法2:使用INDEX+SMALL组合(兼容旧版Excel)
如果你的Excel版本不支持FILTER函数,可使用数组公式实现:
在子表的A1单元格输入公式,按Ctrl+Shift+Enter确认(新版Excel可能无需手动触发数组计算):
=IFERROR(INDEX(Sheet5!A:A, SMALL(IF(Sheet5!D:D=TRUE, ROW(Sheet5!D:D)), ROW(A1))), "")
然后将公式横向复制到B、C列,再纵向下拉填充,直到单元格显示空值即可。
IF(Sheet5!D:D=TRUE, ROW(Sheet5!D:D))会生成所有D列为TRUE的行号数组SMALL(..., ROW(A1))按顺序取出第1、2、3...个符合条件的行号INDEX根据行号提取对应列的数据,IFERROR处理无更多数据时的显示
你之前用的IF公式会留空白行,是因为它逐行判断并返回结果,即使不符合条件也会占用一行;而上述两种方法只会提取符合条件的行,自动紧凑排列,不会留下空白行。
内容的提问来源于stack exchange,提问作者Pete
相关产品推荐
相关产品推荐

