如何使用Query或Vlookup

时间:2018-01-09 10:22:29

标签: google-sheets google-query-language

我有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

1 个答案:

答案 0 :(得分:3)

Sample File

请尝试使用基本公式来连接工作表+查询以跳过某些行。

基本公式:

=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

使用注意事项:

  1. Sales!B14:B,Sales!C14:C,Sales!E14:E是您需要先选择的一些列
  2. IFERROR(vlookup(Sales!E14:E,{People!B2:B,People!D2:D},2,)将返回&#34; People&#34;中的列,它是列People!D2:D。请注意,列Sales!E14:EPeople!B2:B都包含密钥,在示例中它是电子邮件列表。
  3. Sales!F14:F是下一个要返回的列。
  4. 过滤条件Sales!A14:A<>""是从原始图纸中跳过空行。您还可以在过滤器中添加其他条件。
  5. query部分将缩短报告并跳过密钥(电子邮件)不匹配的值。您可以在查询中添加其他条件。
  6. 请注意。 Google表格中的查询语言没有joins,并且提供的解决方案是一种解决方法。它显示了如何在Sheets中使用vlookup函数进行连接。

    • 提供的公式从工作表中收集行&#34; Sales&#34;并使vlookup成为表格&#34; People&#34;。您也可能想要反之亦然报告:从&#34; People&#34;收集数据。来自&#34;销售&#34;。
    • 的&#39; vlookup`数据

    <强>&#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跳过值,因为查询使用单一数据类型(数字或文本)。

    如果您对其运作方式有任何疑问,请在此处发表评论。