我有一个包含两列A
和B
的表格,第一列是标记,第二列是金额。我正在尝试用两列写一个查询,一个总结负值而另一个总结正值。
来自SQL,我尝试了以下
=QUERY(A1:B100,
"SELECT A, SUM( B * IF(B>0, 0, 1) ),
SUM( B * IF(B<0, 0, 1) ) GROUP BY A ")
但似乎查询中不支持IF
函数。我知道我可以在我的工作表中创建两个中间列(一个用于正值,一个用于负值),但我想知道是否可以通过查询实现我想要的,或者在没有中间列的情况下实现。
答案 0 :(得分:1)
如果必须使用查询功能,假设您的标签数据位于A列,而您的值位于B列:
=arrayformula(query({A1:A100,if(B1:B100>0,B1:B100,),if(B1:B100<0,B1:B100,)},"Select Col1, sum(Col2), sum(Col3) where Col1 <>'' group by Col1 label Col1 'Tag', sum(Col2) 'Positive', sum(Col3) 'Negative'"))
答案 1 :(得分:0)
请参阅此表以获取使用FILTER函数的示例,该函数可能比此用例的查询函数更好: https://docs.google.com/spreadsheets/d/1DW5CyPCC71CopW48uKy6basn-WP4hMfh7kuuJXT-C4o/edit?usp=sharing
我不知道你对标签的意思,但我刚创建了一个随机单词列表,10个负面和10个正面
使用A列中的标签和B列中的数字。然后在D列中,我将其用于“正面”过滤器:
=filter($A$2:$A,$B$2:$B>0)
正面总和:
=sum(filter($B$3:$B,$B$3:$B>0))
在E栏中为负滤镜:
=filter($A$2:$A,$B$2:$B<0)
对于负数:
=sum(filter($B$3:$B,$B$3:$B<0))
编辑:我在工作簿中添加了另一个工作表,向您展示如何在已过滤的标记列表中列出每个标记旁边的总和: 在此表中,我创建了如何列出每个特定标记的总和的示例:https://docs.google.com/spreadsheets/d/1DW5CyPCC71CopW48uKy6basn-WP4hMfh7kuuJXT-C4o/edit#gid=1784614303
此公式将查看A列和A列中的标签/值列表。 B,然后匹配并汇总D列中左侧单元格中的所有标签:
=sum(filter($B$3:$B,$B$3:$B>0,$A$3:$A=D3))
答案 2 :(得分:0)
=arrayformula(query({a1:a100,if(b1:b100>0,b1:b100,),if(b1:b100<0,b1:b100,)},"Select Col1,sum(Col2),sum(Col3) group by Col1"))