DSUM:如何使用大括号定义条件范围?

时间:2009-12-19 11:39:35

标签: excel excel-formula

我认为通过一个例子解释我的问题更容易:

alt text

根据上面的电子表格,公式=DSUM(A4:D8,B4,A1:A2)有效,返回20.

为什么=DSUM(A4:D8,B4,{"OrderID";">10567"})不起作用? (它返回#VALUE!)

4 个答案:

答案 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))

一般来说,我建议你不要硬编码这样的东西,这是“不好的做法”,但是你喜欢。