基于新表单响应覆盖特定列数据的方法?

Way to overwrite specific column data based on new form response?

我有一个 Google 表格(表格 1),销售人员会在销售完成后填写该表格。此表格提供了上传客户文件的选项,例如。护照复印件、地址证明等。这些都是可选的,因为客户在销售时可能没有。

这些上传通过主输入中的 Google 文档链接进行跟踪 sheet。

我有第二个表格(表格 2),用于上传第一次尝试时从未上传的文件。

可能会多次使用表格 2,因为可能会在不同时间上传多个文档。

有没有办法用表单 2 的新输入覆盖表单 1 的空白输入数据?

毕竟,文件已上传,最终结果将类似于

中的第三个 sheet

https://docs.google.com/spreadsheets/d/1cOSBvgCFYoLYsf4GslyshUoXO0EP_ZbHfuaiGYD8FLk/edit?usp=sharing

我不喜欢更改表格结果。我发现在其他地方做所有事情:

  • 在我构建或时从数据完整性的角度来看更安全 正在试验,
  • 对表格的风险较小→传播sheet link,
  • 有助于满足任何 process/data 透明度需求,因为它是原始的,
  • 有帮助 具有严格的共享和访问管理要求,并且
  • 报告或分析的格式具有更大的灵活性,并且 功能。

我在您的演示传播中添加了 "Report" sheetsheet。第 2 行只有五个公式。它们每个都从两个表单响应 sheet 中提取适当的数据,实时更新任何其他响应,并显示每个生成行的请求输出.

如果您可以容忍转到“报告”选项卡而不是直接在 Form 1 Responses 中工作的变化,我认为这是正确的方法并且非常适合您的文件。祝你的项目一切顺利。


下面,我抄下了五口诀,以供后人参考。如果您认为您最终会使用该报告选项卡,或根据您的项目调整其公式,请务必说明,我会详细解释它们——没有什么比一年过去更糟糕的了,然后您必须修复我复杂的公式或编辑它们以满足一些新项目的需要。

A2—从两种形式中获取每个不同的名称

=UNIQUE({'Form 1 Response'!A2:A;'Form 2 Response'!A2:A})

B2—显示 'Complete' 或缺少哪些 Doc 字母

=ARRAYFORMULA(IFS(
  NOT(LEN(A2:A)),"",
  LEN(C2:C)*LEN(D2:D)*LEN(E2:E),"Complete",
  TRUE,IF(LEN(C2:C),"","Doc A ")&IF(LEN(D2:D),"","Doc B ")&IF(LEN(E2:E),"","Doc C")
))

C2—从任一表格

中为 Doc A 拉入任何 link
=ARRAYFORMULA(IF(NOT(LEN($A:$A)),"",
  IFERROR(VLOOKUP($A:$A,FILTER('Form 1 Response'!$A:C,LEN('Form 1 Response'!C:C)),3,FALSE))&
  IFERROR(VLOOKUP($A:$A,FILTER('Form 2 Response'!$A:B,LEN('Form 2 Response'!B:B)),2,FALSE))
))

D2—B 博士 links

=ARRAYFORMULA(IF(NOT(LEN($A:$A)),"",
  IFERROR(VLOOKUP($A:$A,FILTER('Form 1 Response'!$A:D,LEN('Form 1 Response'!D:D)),4,FALSE))&
  IFERROR(VLOOKUP($A:$A,FILTER('Form 2 Response'!$A:C,LEN('Form 2 Response'!C:C)),3,FALSE))
))

E2—Doc C links

=ARRAYFORMULA(IF(NOT(LEN($A:$A)),"",
  IFERROR(VLOOKUP($A:$A,FILTER('Form 1 Response'!$A:E,LEN('Form 1 Response'!E:E)),5,FALSE))&
  IFERROR(VLOOKUP($A:$A,FILTER('Form 2 Response'!$A:D,LEN('Form 2 Response'!D:D)),4,FALSE))
))

粘贴到A1:

=ARRAYFORMULA({'Form 1 Response'!A1:E1; {UNIQUE({'Form 1 Response'!A2:A; 'Form 2 Response'!A2:A}),
 SUBSTITUTE(REGEXREPLACE(SUBSTITUTE(REGEXREPLACE(TRIM(TRANSPOSE(QUERY(TRANSPOSE(SUBSTITUTE(IF(
 IFERROR(IF(VLOOKUP(UNIQUE({'Form 1 Response'!A2:A; 'Form 2 Response'!A2:A}), 'Form 1 Response'!A2:E, 
 {3, 4, 5}, 0)="", IF({
 VLOOKUP(UNIQUE({'Form 1 Response'!A2:A; 'Form 2 Response'!A2:A}), 
 QUERY({'Form 2 Response'!A2:D}, "where Col2 is not null"), 2, 0),
 VLOOKUP(UNIQUE({'Form 1 Response'!A2:A; 'Form 2 Response'!A2:A}), 
 QUERY({'Form 2 Response'!A2:D}, "where Col3 is not null"), 3, 0),
 VLOOKUP(UNIQUE({'Form 1 Response'!A2:A; 'Form 2 Response'!A2:A}), 
 QUERY({'Form 2 Response'!A2:D}, "where Col4 is not null"), 4, 0)}="", , {'Form 2 Response'!B1:D1}),
 {'Form 1 Response'!C1:E1}))="", {'Form 1 Response'!C1:E1}, 1), " ", "♠")), , 500000))),
 "  | ", ", "), "1, 1, 1", "Complete"), "1, |, 1|Doc♠A, Doc♠B, Doc♠C", ""), "♠", " "),
 IFERROR(IF( VLOOKUP(UNIQUE({'Form 1 Response'!A2:A; 'Form 2 Response'!A2:A}), 'Form 1 Response'!A2:E, 
 {3, 4, 5}, 0)="", {
 VLOOKUP(UNIQUE({'Form 1 Response'!A2:A; 'Form 2 Response'!A2:A}), 
 QUERY({'Form 2 Response'!A2:D}, "where Col2 is not null"), 2, 0),
 VLOOKUP(UNIQUE({'Form 1 Response'!A2:A; 'Form 2 Response'!A2:A}), 
 QUERY({'Form 2 Response'!A2:D}, "where Col3 is not null"), 3, 0),
 VLOOKUP(UNIQUE({'Form 1 Response'!A2:A; 'Form 2 Response'!A2:A}), 
 QUERY({'Form 2 Response'!A2:D}, "where Col4 is not null"), 4, 0)},
 VLOOKUP(UNIQUE({'Form 1 Response'!A2:A; 'Form 2 Response'!A2:A}), 'Form 1 Response'!A2:E, 
 {3, 4, 5}, 0)))}})

demo spreadsheet