1

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

替代文字

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

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

4

4 回答 4

1

根据此页面上关于 D-Functions 的说法,我认为您需要将标准放在单独的单元格中。

编辑:如果在公式中包含标准的目的是使其更具可读性,则可以改为使用命名范围

编辑2: 回应您的评论。由于函数的工作
方式,不可能做你想做的事(包括公式中的标准) 。DSUM()查看文档DSUM并将其与以下内容进行比较VLOOKUP

DSum 函数的语法是:

DSum( range, field, criteria )

range是您要对其应用条件的单元格范围。

字段是对值求和的列。您可以指定列在列表中的数字位置,也可以用双引号指定列标签。

标准是包含您的标准的单元格区域。

注意区别:

VLookup 函数的语法是:

VLookup( value, table_array, index_number, not_exact_match )

value是要在 table_array 的第一列中搜索的值。

table_array是按升序排序的两列或多列数据。

index_number是 table_array 中必须返回匹配值的列号。第一列是 1。

DSUM寻找包含标准的一系列单元格时,您无法避免传递它——一系列单元格。

我认为您能做的最好的事情就是将您的不同标准定义为命名范围,这将使您更容易根据您想在公式中执行的操作来引用不同的标准。不幸的是,如果常规SUM函数对您来说不够快,那么您无能为力 - 您必须在单元格中指定要使用的标准DSUM

于 2009-12-19T11:48:02.127 回答
1

您可以使用 SUMIF(A5:A8;>10567;D5:D8)。一个非常有用且未被充分利用的功能。

第二个参数可能是另一个具有条件的单元格的 REF。

于 2013-10-04T17:34:38.983 回答
0

来自 DSUM 文档

条件是包含您指定的条件的单元格区域。您可以为条件参数使用任何范围,只要它包含至少一个列标签和在您指定列条件的列标签下方的至少一个单元格。

VLOOKUP 使用一组值。

table_array 必需。包含数据的单元格区域。您可以使用对范围的引用(例如,A2:D8)或范围名称。

于 2009-12-19T11:47:01.737 回答
0

Dsum 很烂,试试这个:=SUMPRODUCT((A5:A8>10569)*(B5:B8))

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

于 2009-12-20T12:20:36.033 回答