值中的数字求和(Microsoft Excel)
如果您的单元格包含一个值,则可能需要设计一种将值中所有数字加在一起的方法。例如,如果一个单元格包含值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!错误。
这些不是此类计算的唯一可能公式。
您可以在Microsoft知识库中找到公式的其他一些示例:
http://support.microsoft.com/?kbid=214053
您还可以使用用户定义的函数来返回所需的总和。下面的宏逐步遍历引用的单元格中的每个数字并计算总数。然后将该值返回给用户:
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培训的来源。
本技巧(12002)适用于Microsoft Excel 2007、2010、2013和2016。您可以在下面的Excel的较旧菜单界面中找到此提示的版本:`link:/ excel-Summing_Digits_in_a_Value [将数字求和]。