单元格中的复杂求和值

单元格中的复杂求和值

假设我有公式结果+10+5+1+40,以文本形式返回此内容。然后我想将这些数字相加以得到总数。

结果可以是任意数量的值,因此像+2+5+10+5+7+1+8

如果有帮助的话,原始数据集是这样的S10_S5_S1_S40E_E_S2_S5我已经删除了除了 S 旁边的数字之外的所有内容,这是我想要添加的。

最后,我要发布超级用户,因为如果可以的话,我想避免使用VBA。

更新

通过这个公式: =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(D25,"E",""),"_",""),"S","=",1),"S","+")

我已经把它归结=10+5+1+40为d25 = ...,但这与在前面S10_S5_S1_S40有一个相同!+

答案1

假设您只按照示例有1或2个数字,那么此“数组公式”将总结D25的所有“ S”号码

=SUM(IF(MID(D25,ROW(INDIRECT("1:"&LEN(D25))),1)="S",(0&SUBSTITUTE(MID(D25,ROW(INDIRECT("1:"&LEN(D25)))+1,2),"_",""))+0))

确认CTRL+SHIFT+ENTER

因此如果 D25 包含S10_S5_S1_S40该值,则结果为 56

答案2

没有工作表公式可以做到这一点。您可以使用旧的 Excel 4 宏函数 EVALUATE(),但它只能在命名范围内使用。

因此,如果您在 D 列中有数据,并且在 E 列中有替代公式,则选择 F25 并使用名称管理器创建一个新的命名公式。将其命名为“EvaluateMe”,并让其引用

=EVALUATE(Sheet1!E25)

然后,输入

=EvaluateMe 

到单元格 F25,结果就会显示出来。此命名范围使用相对引用,如果定义时活动单元格位于 F25,它将始终尝试计算左侧单元格的值。

答案3

这源自 Barry 的“精彩”回答。以下“数组公式”

=SUM(IF(MID(D25,ROW(INDIRECT("1:"&LEN(D25))),1)="S",MID(D25,ROW(INDIRECT("1:"&LEN(D25)))+1,IFERROR(FIND("_",D25,ROW(INDIRECT("1:"&LEN(D25)))+1),LEN(D25)+1)-(ROW(INDIRECT("1:"&LEN(D25)))+1))+0))

(用Ctrl++输入)将添加单元格中的所有“S”数字,无论长度如何;因此,如果包含“S10_S5_S1_S240”,则上述公式将给出结果 256。这也可以处理负数:“S10_S5_S-1_S240”将得到 254。ShiftEnterD25D25

我没有详尽地测试。

相关内容