MS表单关联Excel:筛选非空评论行复制指定列数据的自动方案
解决方案
动态数组公式方案(推荐,适用于Excel 365/2021)
假设你要将提取结果放在工作表的A20单元格开始的区域(可自行调整起始位置),直接在A20输入以下公式,公式会自动溢出填充所有符合条件的行:
=FILTER(CHOOSECOLS($A$2:$O$1000,7,8,15),CHOOSECOLS($A$2:$O$1000,15)<>"","无合规请假记录")
公式解析
$A$2:$O$1000:替换为你原始数据的实际范围,确保覆盖G、H、O列的所有行CHOOSECOLS(...,7,8,15):精准提取第7列(姓名G列)、第8列(时间H列)、第15列(评论O列)的数据CHOOSECOLS(...,15)<>"":仅保留O列评论非空的行- 最后一个参数为无符合条件时的提示文本,可按需修改
适配合并单元格的要点
由于原始数据存在合并单元格,需注意:
- 公式引用的原始数据范围必须包含所有合并单元格的完整区域,避免数据遗漏
- 动态数组提取的结果会继承原始合并单元格的格式,无需额外调整
自动同步设置
要实现完全自动更新,无需手动操作:
- 确认Excel的「计算选项」设置为自动(默认开启,可通过「公式」选项卡查看)
- 当Microsoft表单同步新数据到原始区域时,公式会自动重新计算并更新提取结果
兼容旧版Excel的方案(无动态数组支持)
如果使用Excel 2019及更早版本,可使用INDEX+SMALL数组公式组合:
- 在目标姓名列起始单元格(如A20)输入:
按=IFERROR(INDEX($G:$G,SMALL(IF($O:$O<>"",ROW($O:$O)),ROW(A1))),"")Ctrl+Shift+Enter完成数组公式输入,然后下拉填充至足够行数 - 在目标时间列(如B20)输入:
同样按=IFERROR(INDEX($H:$H,SMALL(IF($O:$O<>"",ROW($O:$O)),ROW(A1))),"")Ctrl+Shift+Enter后下拉填充 - 在目标评论列(如C20)输入:
按=IFERROR(INDEX($O:$O,SMALL(IF($O:$O<>"",ROW($O:$O)),ROW(A1))),"")Ctrl+Shift+Enter后下拉填充
内容的提问来源于stack exchange,提问作者Mergg
相关产品推荐
相关产品推荐

