假设我有公式结果+10+5+1+40
,以文本形式返回此内容。然后我想将这些数字相加以得到总数。
结果可以是任意数量的值,因此像+2+5
或+10+5+7+1+8
。
如果有帮助的话,原始数据集是这样的S10_S5_S1_S40
。E_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。ShiftEnterD25
D25
我没有详尽地测试。