ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > 函数与公式 > 如何依代码加减运算得出赋值结果?

如何依代码加减运算得出赋值结果?

作者:绿色风 分类: 时间:2022-08-17 浏览:100
楼主
liuguansky
Q:现在有代码对应一组值,但是怎么返回代码加减表达式所对应的赋值结果?
即达到如下图的效果:


A:
如果代码加减中代码没有重复,可用以下数组公式:

  1. =SUM((IF(ISERROR(MID("+"&D1,FIND($A$1:$A$6,"+"&D1)-1,1)&"1"),0,MID("+"&D1,FIND($A$1:$A$6,"+"&D1)-1,1)&"1"))*($B$1:$B$6*(LEN(D1)-LEN(SUBSTITUTE(D1,$A$1:$A$6,"")))/LEN($A$1:$A$6)))
如果代码加减中有重复代码出现,可用以下数组公式:

  1. =SUM(--(MID("+"&D1&REPT("+",4),SMALL(IF(MID("+"&D1&REPT("+",4),ROW($1:$100),1)={"-","+"},ROW($1:$100)),ROW($1:$5)),1)&MMULT(N(TRIM(MID(SUBSTITUTE(SUBSTITUTE(D1,"-",REPT(" ",20)),"+",REPT(" ",20)),20*ROW($1:$5)-19,20))=TRANSPOSE(A$1:A$6)),B$1:B$6)))
实例文件如下:
2楼
mjgdxx
好长的公式
3楼
gouweicao78
给一个MMULT+SUBSTITUTE的解法:
  1. =SUM(MMULT((LEN(D1)-LEN(SUBSTITUTE("+"&D1,{"+","-"}&A$1:A$6,))+1)/LEN(A$1:A$6&1)*B$1:B$6,{1;-1}))
适应重复。
4楼
gouweicao78
思路说明一下:
(LEN-LEN(SUBSTITUTE(替换掉特定字符)))/LEN(特定字符)
计算包含特定字符的个数
使用{"+","-"}分别替换带+号和带-号的A列代码的个数,并与B列值相乘后,再用MMULT求和,与第2参数{1;-1}对应。
5楼
liuguansky
依草版思路补充两个EVALUATE用法。<适用乘法,更强大>
一个是EVALUATE+VLOOKUP+SUBSTITUTE
一个是EVALUATE+定义名称<比较简单,但是定义名称可能引起重复,需修改之前与代码相重复的名称定义>
见附件。
依代码运算返回结果值.rar

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap