在 Google 个工作表中使用查询进行动态列选择
Dynamic column selection using Query in Google Sheets
我有一个价差sheet,用于计算按地点工作的小时数并生成发票金额。我想出了一种(相当脆弱的)方法来实现这一点,即在已排序的资源列表中使用 SUMPRODUCT
。但是,这显然无法扩展。
我突然想到,我可以将 QUERY
函数与 SUMPRODUCT
一起使用,并且无需将人工结构强加到数据集上。但是,由于需要在我的 spreadsheet 中的每一列中复制此公式,并且由于列选择器是 SELECT
语句字符串的一部分,因此当我在每个单元格中复制公式时,它不会动态调整在行中。我尝试使用 COLUMN()
构建公式来动态构建 SELECT
语句,但一直出现解析错误。
这里是sheet:https://docs.google.com/spreadsheets/d/1EK2UcgsBqzb3Pfky8SALlTSEdeYvviv3QeyEPDu2mF0/edit?usp=sharing
有人可以帮我吗?
尝试:
=INDEX(QUERY(QUERY(SPLIT(FLATTEN(
IF(C3:K10="",,B3:B10&"×"&C3:K10*L3:L10&"×"&C2:K2)), "×"),
"select Col1,sum(Col2)
where Col2 is not null
group by Col1
pivot Col3"),
"offset 1", ))
我有一个价差sheet,用于计算按地点工作的小时数并生成发票金额。我想出了一种(相当脆弱的)方法来实现这一点,即在已排序的资源列表中使用 SUMPRODUCT
。但是,这显然无法扩展。
我突然想到,我可以将 QUERY
函数与 SUMPRODUCT
一起使用,并且无需将人工结构强加到数据集上。但是,由于需要在我的 spreadsheet 中的每一列中复制此公式,并且由于列选择器是 SELECT
语句字符串的一部分,因此当我在每个单元格中复制公式时,它不会动态调整在行中。我尝试使用 COLUMN()
构建公式来动态构建 SELECT
语句,但一直出现解析错误。
这里是sheet:https://docs.google.com/spreadsheets/d/1EK2UcgsBqzb3Pfky8SALlTSEdeYvviv3QeyEPDu2mF0/edit?usp=sharing
有人可以帮我吗?
尝试:
=INDEX(QUERY(QUERY(SPLIT(FLATTEN(
IF(C3:K10="",,B3:B10&"×"&C3:K10*L3:L10&"×"&C2:K2)), "×"),
"select Col1,sum(Col2)
where Col2 is not null
group by Col1
pivot Col3"),
"offset 1", ))