首页 > 解决方案 > Google 表格 - 查询具有不同结构的多个表格

问题描述

寻求有关如何构建将处理来自多个工作表(即选项卡)的数据的查询的帮助,但是两个工作表具有不同的数据结构。

第一个查询(如下)查询包含我所有费用的选项卡。这是按月计算的。=query(Expense_Data, "SELECT C, SUM(Q) where T Matches 'Expense' GROUP BY C ORDER BY C desc limit 3 label SUM(Q) 'Expenses'",1)

下面的示例数据输出

日期 花费
2021 年 1 月 1 日 -$1000
2021 年 1 月 2 日 -$1500
01/03/2021 -$1000

我正在寻求的是查询另一张表,其中包含我希望根据从第一个查询返回的日期(位于 A 列中)返回的数据(位于 G 列中),然后我将计算两者之间的差异。我的问题是将 2 个数据集关联在一起。任何支持将不胜感激!

日期 花费 预算 不同之处
2021 年 1 月 1 日 -$1000 -$2000 -$XXXX
2021 年 1 月 2 日 -$1500 -$1500 -$XXXX
01/03/2021 -$1000 -$1500 -$XXXX

标签: google-sheets-formula

解决方案


尝试:

=QUERY(Expense_Input, 
 "select C,sum(Q) 
  where T matches 'Expense' 
  group by C 
  order by C desc 
  limit 3 
  label sum(Q) 'Expenses', C'Month' 
  format C'mmmm yyyy'", 1)

然后:

={"Budget"; ARRAYFORMULA(IFNA(VLOOKUP(TO_TEXT(A13:A), 
 {'Expense Lookup (Monthly)'!C:C&" "&'Expense Lookup (Monthly)'!D:D, 
 SUBSTITUTE('Expense Lookup (Monthly)'!G:G, "$", )*1}, 2, 0)))}

和:

={"Difference"; INDEX(IF(A13:A="",,C13:C-B13:B))}

在此处输入图像描述


更新

一气呵成:

=ARRAYFORMULA(QUERY({QUERY(Expense_Input, 
 "select C,sum(Q) 
  where T matches 'Expense' 
  group by C 
  order by C desc 
  limit 3 
  format C 'mmmm yyyy'", 1), IFNA(VLOOKUP(TEXT(INDEX(QUERY(Expense_Input, 
 "select C,sum(Q) 
  where T matches 'Expense' 
  group by C 
  order by C desc 
  limit 3",1),,1), "mmmm yyyy"), 
 {'Expense Lookup (Monthly)'!C:C&" "&'Expense Lookup (Monthly)'!D:D, 
 SUBSTITUTE('Expense Lookup (Monthly)'!G:G, "$", )*1}, 2, 0))}, 
 "select Col1,Col2,Col3,Col3-Col2 
  label Col1'Month',Col2'Expenses',Col3'Budget',Col3-Col2'Difference'"))

在此处输入图像描述


推荐阅读