我在工作簿中有两张纸(Sheet1,Sheet2)。
表2包含一个具有5列的表(名为Table1):
在第一页上,我有2列:
现在,我想做的是:
例如,在范围1(B6:B16)中:
在范围2(C6:C16):
现在,我要做的就是将外卖店(麦当劳,肯德基)的值相加,并排除不符合条件的内容。
因此,我的总和将是所有带走事件-如果在我的表中列出了这些情况-在这种情况下为350。
但是我似乎无法使公式生效。
我使用了以下来源:
https://exceljet.net/excel-functions/excel-sumifs-function
Selecting a Specific Column of a Named Range for the SUMIF Function
并得出以下公式:
=SUMIF($B$6:$B$16;Table1[Takeaways];C6:C16)
此来源:
https://excelchamps.com/blog/sumif-sumifs-or-logic/
并得出以下公式:
=SUM(SUMIFS(C6:C16;B6:B16;Table1[Takeaways]))
两个公式都返回0。
但是,如果我同时将Table1 [Takeaways]更改为“ McDonalds”,那么它们会正确地识别范围1中每次出现的“ McDonalds”一词。
编辑:
我更新了上面的公式以匹配下面的图像。
这是包含引用的表:
此表包含数据:
公式:
单元格C4(外卖店旁边):=SUMIF($B$6:B$16;Table1[Takeaways];C6:C16)
单元格C5(燃料旁边):=SUM(SUMIFS(C6:C16;B6:B16;Table1[Fuel]))
似乎公式中仅检测到了BP。
当我将公式与单个单元格引用一起使用而不是表或使用范围时,这是一个输出表:
公式:
单元格F4(在BP旁边):=SUMIF($B$6:B$16;"BP";C6:C16)
单元格F5(在Caltex旁边):=SUM(SUMIFS(C6:C16;B6:B16;"Caltex"))
F6单元格(麦当劳旁边):=SUMIF($B$6:B$16;"McDonalds";C6:C16)
F7单元格(在KFC旁边):=SUM(SUMIFS(C6:C16;B6:B16;"KFC"))
答案 0 :(得分:3)
如果我正确理解了您要实现的目标,那么我认为您的设置在概念上是不正确的。
您似乎正在尝试跟踪费用,并且每个费用(或收款人)都被分配到一个类别(“外带”,“家庭”等)中。从relational-model的角度来看,您的第二张表(定义了每个费用/收款人的类别)应该只有两列(或变量):费用名称和费用类别。
您设置的表格(“表格2”)使用类别(即可能的值)作为不同的列(即变量)。但是只有一个变量,即“费用类别”,类别本身就是可能的值。
如果这样设置,问题就会改变:您可以在第一个表中添加一个从属列,以显示每个收款人的类别(或“费用名称”),第二个中使用VLOOKUP()
桌子。
然后您可以将所有与该类别匹配的收款人的费用相加。
注意:我已经使用 LibreOffice Calc 创建了插图,因此可能会有一些细微差别,但是逻辑是相同的。
答案 1 :(得分:1)
没有看到L和K中的数据,我无法给出完整的答案-但这可能与拉数组的方式有关
尝试类似的操作
=SUMPRODUCT(SUMIFS($L$11:$L$43,$K$11:$K$43,CHOOSE({1,2},Takeaways,"anything else you wanted to sum")))
记住SUMIFS适用于多个条件,因此,如果仅计算一个,则需要=SUMPRODUCT(SUMIF(
以上方法仅适用于垂直向量,但是更改命名范围,使2列的表格改为2个命名范围应该没问题-除非这是您要求的一部分
表2将变为 expense_Name 和 expense_Total 等
答案 2 :(得分:1)
我打算将其作为我自己的问题here的副本来结束,但是我认为使用命名范围存在一些差异。但是,其背后的逻辑或多或少地遵循相同的方法。
下面进一步解决我的部分解决方案,我得出了以下公式:
=SUMPRODUCT(COUNTIF(Table1[Takeaways];Range1)*Range2)
COUNTIF()
部分计算表中单元格值的出现次数。因此,请确保您的表中没有重复项。如果表中存在该值,则COUNTIF()
的结果将为0。这样,我们将创建一个1和0的矩阵。通过相乘并使用SUMPRODUCT()
,我们迫使excel执行矩阵计算并返回正确的结果。
部分解决方案
我使用以下公式:
=SUMPRODUCT(ISNUMBER(MATCH(Range1;Table1[Takeaways]))*Range2)
该公式执行以下操作:
MATCH()
检查表中是否存在Range1中的值,并返回匹配值在表中的位置。ISNUMBER()
通过检查MATCH()
功能是否返回了数字来检查是否找到匹配项Range2
相乘会强制使用SUMPRODUCT()
函数进行矩阵计算编辑:
这只适用于非常有限的样本。一旦将第四行添加到我的数据中,该公式就会按预期停止工作。看截图:
它把前两个值正确地加到了总和中,没有考虑到第四个值。