如何使用 Query 或 Vlookup 连接表
How to join tables using Query or Vlookup
我有 2 sheet
人 sheet 有
[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]
销售额sheet有
[DATE PROSPECT NAME EMAIL ADDRESS CONTACT METHOD PRODUCT RESULT NOTES ]
如何在 people.email = sales.EMAIL ADDRESS 时生成报告并仅在它们匹配时显示记录(并非所有销售 sheet)
报告字段是
full_name
EMAIL ADDRESS
PRODUCT
commission
Sample File
请尝试使用基本公式连接 sheets + 查询以跳过某些行。
基本公式:
=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
错误替换为文本“不显示”。
然后它使用查询来隐藏值为“不显示”的行:
"select * where Col4 <> 'do not show'"
基本公式和问题
使用说明:
Sales!B14:B,Sales!C14:C,Sales!E14:E
是您需要先 select 的一些列
IFERROR(vlookup(Sales!E14:E,{People!B2:B,People!D2:D},2,)
将 return 列从“人物”中,它是列 People!D2:D
。请注意列 Sales!E14:E
和 People!B2:B
都包含一个键,在示例中它是电子邮件列表。
Sales!F14:F
是return下一个栏目。
- 过滤条件
Sales!A14:A<>""
是跳过原sheet中的空行。您还可以将其他条件添加到过滤器中。
query
部分将缩短报告并跳过键(电子邮件)不匹配的值。您可以在查询中添加其他条件。
注意。 Google 表格中的查询语言没有 joins
,提供的解决方案是一种解决方法。它展示了如何借助表格中的 vlookup
函数进行连接。
- 提供的公式从 sheet“销售”收集行,并使
vlookup
到 sheet“人员”。您可能还想制作反之亦然的报告:从“People”收集数据,从“Sales”收集“vlookup”数据。
“反之亦然”报告:
=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")
注意! 在此公式中使用数值 100500 来跳过值,因为查询使用单一数据类型(数字或文本)。
如果您对它的工作原理有任何疑问,请在此处发表评论。
我有 2 sheet
人 sheet 有
[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]
销售额sheet有
[DATE PROSPECT NAME EMAIL ADDRESS CONTACT METHOD PRODUCT RESULT NOTES ]
如何在 people.email = sales.EMAIL ADDRESS 时生成报告并仅在它们匹配时显示记录(并非所有销售 sheet)
报告字段是
full_name
EMAIL ADDRESS
PRODUCT
commission
Sample File
请尝试使用基本公式连接 sheets + 查询以跳过某些行。
基本公式:
=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
错误替换为文本“不显示”。
然后它使用查询来隐藏值为“不显示”的行:
"select * where Col4 <> 'do not show'"
基本公式和问题
使用说明:
Sales!B14:B,Sales!C14:C,Sales!E14:E
是您需要先 select 的一些列IFERROR(vlookup(Sales!E14:E,{People!B2:B,People!D2:D},2,)
将 return 列从“人物”中,它是列People!D2:D
。请注意列Sales!E14:E
和People!B2:B
都包含一个键,在示例中它是电子邮件列表。Sales!F14:F
是return下一个栏目。- 过滤条件
Sales!A14:A<>""
是跳过原sheet中的空行。您还可以将其他条件添加到过滤器中。 query
部分将缩短报告并跳过键(电子邮件)不匹配的值。您可以在查询中添加其他条件。
注意。 Google 表格中的查询语言没有 joins
,提供的解决方案是一种解决方法。它展示了如何借助表格中的 vlookup
函数进行连接。
- 提供的公式从 sheet“销售”收集行,并使
vlookup
到 sheet“人员”。您可能还想制作反之亦然的报告:从“People”收集数据,从“Sales”收集“vlookup”数据。
“反之亦然”报告:
=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")
注意! 在此公式中使用数值 100500 来跳过值,因为查询使用单一数据类型(数字或文本)。
如果您对它的工作原理有任何疑问,请在此处发表评论。