问题:单元格中有一个值,如何将这个值中的所有数字进行相加?
例如:下图中,B3单元格的值为:1845,每个数字进行相加,即:1+8+4+5=18,也就是D3单元格中显示的结果。
如何用函数公式来解决?
具体操作步骤如下:
1、选中D3单元格,在编辑栏中输入公式:=SUMPRODUCT(1*MID(B3,ROW(INDIRECT("1:"&LEN(B3))),1)),按回车键回车,并将公式下拉填充至D8单元格即可。
2、动图演示如下。
3、公式解析。
①LEN(B3):
LEN函数:返回文本字符串中的字符个数。
LEN(B3)就是返回B3单元格的字符个数,结果为4。
②INDIRECT("1:"&LEN(B3)):
INDIRECT函数:返回文本字符串所指定的引用。
由①可知,公式LEN(B3)返回的结果为4,所以该公式可简化为:INDIRECT("1:4")。
③ROW(INDIRECT("1:"&LEN(B3))):
ROW函数:返回一个引用的行号。
由②可知,公式INDIRECT("1:"&LEN(B3))公式简化为:INDIRECT("1:4"),所以公式ROW(INDIRECT("1:"&LEN(B3)))可以简化为ROW(INDIRECT("1:4")),结果为:{1;2;3;4}。
④1*MID(B3,ROW(INDIRECT("1:"&LEN(B3))),1):
MID函数:从文本字符串中指定的起始位置起返回指定长度的字符。
由③可知,公式ROW(INDIRECT("1:"&LEN(B3)))返回的结果为:{1;2;3;4},代入公式得:1*MID(B3,{1;2;3;4},1),该公式的意思是:在B3单元格中,分别从位置1、2、3和4开始,提取一个字符,得到的结果为:{1;8;4;5}。前面*1是把文本型的数字转成数值型的数字。
⑤=SUMPRODUCT(1*MID(B3,ROW(INDIRECT("1:"&LEN(B3))),1)):
SUMPRODUCT函数:返回相应的数组或区域乘积的和。
由④可知,公式1*MID(B3,ROW(INDIRECT("1:"&LEN(B3))),1)返回的结果为:{1;8;4;5},代入公式得:=SUMPRODUCT({1;8;4;5})。用SUMPRODUCT函数把数组{1;8;4;5}中的每个值相加,即可得到结果:18。
注意:如果要计算的值中,有负数或者非正整数,那么计算的结果将返回错误值:#VALUE!。
好的,今天的分享就到这里了,如果您对以上操作与什么不懂之处,可以评论区留言或私信找我哦~创作不易,希望您的点赞转发支持!
本文首发公众号【Word和Excel达人先生】,如需转载请联系小编!