在 Excel 电子表格中,我有文本条目、、H23
等,并且我想对这些条目的数字部分求和,即、、。w67
P45
23
67
45
我有公式
=SUMPRODUCT((0&MID($H2:$S2,1+ISERROR(LEFT($H2:$S2)+0),10))+0)
它确实能完成工作,但我不确定它在做什么,而且我不愿意在没有完全理解它的情况下使用它。有人能解释一下这个公式吗?
答案1
从单细胞公式开始,以避免混淆。
=SUMPRODUCT((0&MID($H2,1+ISERROR(LEFT($H2)+0),10))+0)
- 您的样本数据都以字母开头,但目的
ISERROR(LEFT($H2:$S2)+0)
是查找数字或字母作为第一个字符并添加1如果它是一封信。LEFT 函数默认为最左边的一个字符,并且视为 TRUE1并且 FALSE 是0。如果最左边的字符是字母,则在任何数学运算中使用它都会产生错误(例如<字符>+ 0)所以1将被添加到1在里面起始编号参数MID 函数开始于2. 如果没有产生错误,则0将被添加到1在里面起始编号范围。 - 这10是 MID 函数尝试检索的最大字符数。如果可用字符数少于该值,则函数将检索这些字符。
- 如果没有数字,SUMPRODUCT 函数尝试将零长度字符串(本质上是空白)转换为数字时会遇到困难。为了防止这种情况,0是 MID 操作返回结果的前缀。
- MID 运算的结果(以及附加的0) 是字符串,而不是数字。只要一切顺利,结果应该都是数字。包含所有数字的字符串可以通过乘以 来转换为真数,而不会改变其数值1或添加0例如,如果你添加0到“123”你得到的真实数字123。
这就是所有内部操作。您所要做的就是将其扩展为多列,并允许使用SUMPRODUCT 函数作为包装器。
=SUMPRODUCT((0&MID($H2:$S2,1+ISERROR(LEFT($H2:$S2)+0),10))+0)
将列锁定为绝对的,但行保持相对的,向下填充后续行。