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

时间:2019-03-27 20:34:11

标签: google-sheets google-form google-sheets-formula

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

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

我有第二个表格(表格2),该表格用于上载在第一次尝试中从未上载过的文档。

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

是否可以用表格2的新输入覆盖表格1的空白输入数据?

毕竟,文档已上传,最终结果类似于下面第三张纸

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

2 个答案:

答案 0 :(得分:2)

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

    从构建数据完整性的角度来看,
  • 更安全 实验
  • 对表单→电子表格链接的风险较小,
  • 因为它是原始的,所以可以满足任何处理/数据透明性的需求,
  • 帮助 具有严格的共享和访问管理要求,并且
  • 允许报表或分析的格式具有更大的灵活性,并且 功能。

我在您的演示电子表格中添加了一个“报告”表。在第2行中只有五个公式。它们每个都从两个“表单响应”工作表中提取适当的数据,实时且具有任何其他响应的最新信息,并为每个生成的行显示请求的输出。

如果您可以忍受转到“报告”选项卡的更改,而不是直接在“表单1响应”中的那里工作,那么我认为这是正确的方法,非常适合您的文件。您的项目一切顺利。


下面,我复制了五个后代公式。如果您认为自己最终将使用该“报告”选项卡,或将其公式调整为适合您的项目的方法,请务必这样做,然后我将对其进行详细解释-比一年前还差,然后您必须修复我那些费解的公式或编辑它们以满足新项目的需要。

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

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

B2-显示“完成”或缺少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的任何链接

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

D2-文档B链接

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

E2-文档C链接

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

答案 1 :(得分:1)

粘贴 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)))}})

0

demo spreadsheet