Google 工作表 - 查询具有不同结构的多个工作表
Google Sheets - Query Multiple Sheets That Have Different Structure
寻求有关如何构造将处理来自多个 sheet 的数据(即选项卡)的查询的帮助,但是两个 sheet 具有不同的数据结构。
第一个查询(下方)查询一个选项卡,其中包含我列出的所有费用。这按月对它们求和。
=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 美元
2021 年 1 月 3 日
-1000 美元
我正在寻找的是查询另一个 sheet,其中包含我希望 return 根据第一个查询 return 编辑的数据(位于 G 列) (位于 A 列),然后我将计算它们之间的差异。我的问题是将 2 个数据集关联在一起。任何支持将不胜感激!
日期
费用
预算
差异
2021 年 1 月 1 日
-1000 美元
-2000 美元
-$XXXX
2021 年 1 月 2 日
-1500 美元
-1500 美元
-$XXXX
2021 年 1 月 3 日
-1000 美元
-1500 美元
-$XXXX
尝试:
=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'"))
寻求有关如何构造将处理来自多个 sheet 的数据(即选项卡)的查询的帮助,但是两个 sheet 具有不同的数据结构。
第一个查询(下方)查询一个选项卡,其中包含我列出的所有费用。这按月对它们求和。 =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 美元 |
2021 年 1 月 3 日 | -1000 美元 |
我正在寻找的是查询另一个 sheet,其中包含我希望 return 根据第一个查询 return 编辑的数据(位于 G 列) (位于 A 列),然后我将计算它们之间的差异。我的问题是将 2 个数据集关联在一起。任何支持将不胜感激!
日期 | 费用 | 预算 | 差异 |
---|---|---|---|
2021 年 1 月 1 日 | -1000 美元 | -2000 美元 | -$XXXX |
2021 年 1 月 2 日 | -1500 美元 | -1500 美元 | -$XXXX |
2021 年 1 月 3 日 | -1000 美元 | -1500 美元 | -$XXXX |
尝试:
=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'"))