约瑟夫有一个工作表,其中包含值列表。这些值中的一些大于零,而其他则小于零。他可以使用SUM函数计算值的总和,但他确实想计算列表中每个项目的绝对值的总和。因此,三个值-33、14 -5的总和为52,而不是-24。

没有可用于创建所需总和的内部函数,但可以创建公式来执行任务。一种方法是按以下方式使用SUMIF函数:

=SUMIF(A1:A10,">0")-SUMIF(A1:A10,"<0")

第一个SUMIF将所有大于零的值相加,第二个SUMIF将所有小于零的值相加。因此,使用四个值-33、14,-5、42,第一个SUMIF将导致总和为56(14 + 42),第二个SUMIF将导致总和为-38(-33 + -5)。当您从第一个(56—​38)中减去第二个总和时,最终的答案为94,这是所有绝对值的总和。

另一种方法是使用SUMPRODUCT函数。下面的公式将产生所需的结果:

=SUMPRODUCT(ABS(A1:A10))

该函数通常用于将数组的不同元素彼此相乘,然后对这些乘积求和。由于仅提供一个数组(A1:A10),因此不会进行乘法运算,但会返回所需绝对值的总和。

您还可以通过使用数组公式来获得所需的结果,数组公式是Excel的一种方便但很少使用的功能。假设您的值在A1:A10范围内,请键入以下公式:

=SUM(ABS(A1:A10))

不要按Enter键;而是按Ctrl + Shift + Enter,表示这是一个数组公式。如果正确输入了公式,您会在公式栏中看到公式周围的花括号:

{=SUM(ABS(A1:A50))}

该公式的作用是在内部创建中间列(这是值的数组),该中间列是A1:A10的各个绝对值。然后,它对该数组求和并显示结果。

最后,如果您愿意,可以创建自己的用户定义函数(宏),该函数将返回范围内绝对值的总和。

以下是将完成此任务的宏:

Function SumAbs(Rng As Range) As Double     Result = 0     On Error GoTo Done     For Each element In Rng         Result = Result + Abs(element)

Next element Done:

SumAbs = Result End Function

您可以通过在工作表中输入一个简单公式来使用该功能:

=SumAbs(A1:A10)

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(12615)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。您可以在此处为Excel的较早菜单界面找到此技巧的版本: