我认为通过一个例子解释我的问题更容易:
根据上面的电子表格,公式=DSUM(A4:D8,B4,A1:A2)
有效,返回20.
为什么=DSUM(A4:D8,B4,{"OrderID";">10567"})
不起作用? (它返回#VALUE!)
答案 0 :(得分:1)
根据this page对D-Functions的说法,我认为您需要在单独的单元格中设置标准。
编辑:如果在公式中包含标准的目的是使其更具可读性,则可以改为使用named ranges。
编辑2: 回复您的评论
由于DSUM()
函数的工作原理,不可能做你想要的(包括公式中的标准)。查看documentation for DSUM
并将其与VLOOKUP
进行比较:
DSum函数的语法是:
DSum( range, field, criteria )
range 是您要对其应用条件的单元格范围。
field 是对值进行求和的列。您可以在列表中指定列的数字位置,也可以在双引号中指定列标签。
条件是包含您的条件的单元格范围。
注意区别:
VLookup函数的语法是:
VLookup( value, table_array, index_number, not_exact_match )
value 是要在table_array的第一列中搜索的值。
table_array 是两个或多个数据列,按升序排序。
index_number 是table_array中的列号,必须从中返回匹配值。第一列是1。
当DSUM
正在寻找包含标准的单元格范围时,您无法做任何事情来避免传递它 - 一系列单元格。
我认为你能做的最好的事情就是将你的不同标准定义为命名范围,这样可以根据你在公式中想要做的事情来更容易地引用不同的标准。不幸的是,如果常规SUM
功能对您来说不够快,那么您无法做其他事情 - 将必须在单元格中指定要使用DSUM
的条件。< / p>
答案 1 :(得分:1)
您可以使用SUMIF(A5:A8;&gt; 10567; D5:D8)。一个非常有用和未充分利用的功能。
第二个参数可能是具有条件的另一个单元格的REF。
答案 2 :(得分:0)
来自DSUM文档
标准是细胞范围 包含你的条件 指定。您可以使用任何范围 标准论证,只要它 包括至少一个列标签和 列下方至少有一个单元格 您在其中指定条件的标签 对于专栏。
VLOOKUP使用一组值。
table_array必需。范围 包含数据的单元格。您可以 使用对范围的引用(for 例如,A2:D8)或范围名称。
答案 3 :(得分:0)
Dsum很糟糕,试试这个: = SUMPRODUCT((A5:A8&GT; 10569)*(B5:B8))
一般来说,我建议你不要硬编码这样的东西,这是“不好的做法”,但是你喜欢。