如果您的单元格包含一个值,则可能需要设计一种将值中所有数字加在一起的方法。例如,如果一个单元格包含值554,则可能要确定5 + 5 + 4的总和,即14。

您可以通过几种方法来完成此任务。 (在Excel中不是总是这样吗?)首先是使用依赖于多个函数的公式:

=SUMPRODUCT(--MID(A1,ROW(INDIRECT("1:" & LEN(A1))),1))

此常规公式将以简单,简洁的方式将任意整数值(在单元格A1中)的数字相加。但是,这不是唯一可能的公式。以下是相同公式的数组公式(通过按Ctrl + Shift + Enter终止)版本:

=SUM(1*MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))

如果A1中的值为正整数,则这些公式中的任何一个都可以正常工作。如果数字中包含任何非数字字符(例如负号或小数点),则公式将返回#VALUE!错误。

您还可以使用用户定义的函数来返回所需的总和。下面的宏逐步遍历引用的单元格中的每个数字并计算总数。然后将此值返回给用户:

Function AddDigits(Number As Long) As Integer     Dim i As Integer     Dim Sum As Integer     Dim sNumber As String

sNumber = CStr(Number)

For i = 1 To Len(sNumber)

Sum = Sum + Mid(sNumber, i, 1)

Next     AddDigits = Sum End Function

要使用此功能,只需在单元格中使用= AddDigits(A1)之类的公式即可。以下是更为紧凑的用户定义函数(以相同的方式调用):

Function AddDigits(ByVal N As Long) As Integer     Do While N >= 1         AddDigits = AddDigits + N Mod 10         N = Int(N / 10)

Loop End Function

与早期的宏不同,此版本不会将单元格内容转换为字符串以进行处理。取而代之的是,它逐步遍历值的每个数字,剥离最后一个数字并将其添加到总计中。

注意:

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

链接:/ excelribbon-ExcelTipsMacros [点击此处在新的浏览器标签中打开该特殊页面]。

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

本技巧(2424)适用于Microsoft Excel 97、2000、2002和2003。可以在以下功能区中为Excel的功能区界面(Excel 2007和更高版本)找到本技巧的版本:

链接:/ excelribbon-Summing_Digits_in_a_Value [值中的数字求和]。