我有2张
人员表
[company first_name last_name full_name address_line1 address_city address_state address_zip address_country telephone email order_id order_date order_time processor order_type order_currency commission campaign_id]
销售表已
[DATE PROSPECT NAME EMAIL ADDRESS CONTACT METHOD PRODUCT RESULT NOTES ]
当people.email = sales.EMAIL ADDRESS时,如何生成报告并仅在匹配时显示记录(并非所有销售表)
报告字段
full_name
EMAIL ADDRESS
PRODUCT
commission
答案 0 :(得分:3)
请尝试使用基本公式来连接工作表+查询以跳过某些行。
基本公式:
=FILTER({Sales!B14:B,Sales!C14:C,Sales!E14:E, vlookup(Sales!E14:E,{People!B2:B,People!D2:D},2,), Sales!F14:F},Sales!A14:A<>"")
您需要的公式:
=QUERY(FILTER({Sales!B14:B,Sales!C14:C,Sales!E14:E, IFERROR(vlookup(Sales!E14:E,{People!B2:B,People!D2:D},2,), "do not show"), Sales!F14:F},Sales!A14:A<>""),"select * where Col4 <> 'do not show'")
它使用iferror(expression, "do not show")
将#N/A
错误替换为文字&#34;不显示&#34;。
然后它使用查询来隐藏值为&#34的行;不显示&#34;:
"select * where Col4 <> 'do not show'"
基本公式和问题is here
使用注意事项:
Sales!B14:B,Sales!C14:C,Sales!E14:E
是您需要先选择的一些列IFERROR(vlookup(Sales!E14:E,{People!B2:B,People!D2:D},2,)
将返回&#34; People&#34;中的列,它是列People!D2:D
。请注意,列Sales!E14:E
和People!B2:B
都包含密钥,在示例中它是电子邮件列表。Sales!F14:F
是下一个要返回的列。Sales!A14:A<>""
是从原始图纸中跳过空行。您还可以在过滤器中添加其他条件。query
部分将缩短报告并跳过密钥(电子邮件)不匹配的值。您可以在查询中添加其他条件。请注意。 Google表格中的查询语言没有joins
,并且提供的解决方案是一种解决方法。它显示了如何在Sheets中使用vlookup
函数进行连接。
vlookup
成为表格&#34; People&#34;。您也可能想要反之亦然报告:从&#34; People&#34;收集数据。来自&#34;销售&#34;。<强>&#34;反之亦然&#34;报告:强>
=QUERY(FILTER({vlookup(People!B2:B ,{Sales!E14:E, Sales!B14:B, Sales!C14:C, Sales!E14:E},{2, 3, 4},), People!B2:B, IFERROR(vlookup(People!B2:B ,{Sales!E14:E, Sales!F14:F},2,),100500)},People!A2:A<>""),"select * where Col5 <> 100500")
note!在此公式中,使用数值100500跳过值,因为查询使用单一数据类型(数字或文本)。
如果您对其运作方式有任何疑问,请在此处发表评论。