You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现仅提取新表单响应对应行的数据至其他工作表?

解决表单提交空字段时INDEX函数重复显示旧数据的问题

问题根源

你当前使用的=INDEX('Respostas do Formulário 1'!B2:B,MATCH(143^143,'Respostas do Formulário 1'!B2:B))是通过匹配极大值定位最后一个有数值的行,但如果新表单提交的对应字段为空,MATCH会定位到上一个有数值的行,导致Sheet2显示旧数据。

解决方案

以下几种方法可确保只获取最新的有效表单响应数据:

  • 方法1:用LOOKUP精准定位最后非空行
    针对日期(时间)列或其他不会为空的主键列,用LOOKUP忽略空行取最后一条有效数据:

    =LOOKUP(2,1/('Respostas do Formulário 1'!B2:B<>""),'Respostas do Formulário 1'!B2:B)
    

    若要取对应产品数量(假设数量在C列),则修改为:

    =LOOKUP(2,1/('Respostas do Formulário 1'!B2:B<>""),'Respostas do Formulário 1'!C2:C)
    

    原理:1/(B2:B<>"")将非空行转为1,空行转为错误值,LOOKUP会自动忽略错误值,匹配最后一个1对应的目标列数据。

  • 方法2:用QUERY筛选最新有效记录
    若需同时获取日期和产品数量,可通过QUERY直接筛选最后一条非空响应:

    =QUERY('Respostas do Formulário 1'!A2:C,"SELECT B,C WHERE B IS NOT NULL ORDER BY B DESC LIMIT 1",0)
    

    原理:筛选日期列(B列)非空的记录,按日期倒序排列后取第一条,即最新的有效表单响应。

  • 方法3:用MAX+FILTER锁定最后有效行号
    先获取最后一个非空行的行号,再用INDEX提取对应数据:

    =INDEX('Respostas do Formulário 1'!B:B, MAX(FILTER(ROW('Respostas do Formulário 1'!B2:B),'Respostas do Formulário 1'!B2:B<>"")))
    

    原理:FILTER筛选出所有非空行的行号,MAX取其中最大值(即最新行),再用INDEX提取对应列数据。

注意事项

确保用来判断的列(如日期/时间列)是表单的必填字段,避免该列出现空值,这样能精准锁定最新的表单响应行。

内容的提问来源于stack exchange,提问作者Pedro Almeida

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 09:35:21