如何用公式提取并计算四个相似型号机器的尺寸体积总和?

蒋春阳
蒋春阳

创作者俱乐部成员

如何用公式提取并计算四个型号的尺寸体积总和?

即100*80*65+80*45*65+90*42*95+60*85*55(型号如下表)

第一行

A列

B列

C列

D列

第二行

JG-W100D80H65

JG-W80D45H65

JG-W90D42H95

JG-W60D85H55

第三行

第四行

第五行

第六行

方法一(比较笨一点)

第一步:查找各个型号的共同点,长宽高分别位于字母W、D、H之后,用FIND函数查找W、D、H的位置,用MID函数提取各个型号的长、宽、高;

A3=(MID(A2,FIND("W",A2)+1,FIND("D",A2)-FIND("W",A2)-1))*1

A4=(MID(A2,FIND("D",A2)+1,FIND("H",A2)-FIND("D",A2)-1))*1

A5=(MID(A2,FIND("H",A2)+1,LEN(A2)-FIND("H",A2)))*1

备注:MID函数提取文本之后乘以1是为转换格式,便于下一步计算(千万不要跟我犯一样的错误哦)。

第二步:依次提取B3:D5数据;

第三步:采用SUMPRODUCT函数将提取出的长、宽、高相乘之后求和,即A3*A4*A5+……+D3*D4*D5,SUMPRODUCT(A3:D3,A4:D4,A5:D5).

方法二(逻辑很巧):

第一步:发现规律。长、宽、高之间的间隔为D和H,如果把D和H换为*,开头的JG-W去掉,岂不是直接变成每个型号的体积?(看似直接相加就好啦,为什么不直接在外层加一个SUM,请往下看或具体实操试试哦)。

第二步:替换函数。使用SUBSTITUTE一步一步替换。

SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2:D2,"JG-W",""),"D","*"),"H","*")。(记得CSE三键结束哦,建议选中一个单元格和四个单元格都亲自尝试,注意结果差异)

({"100*80*65","80*45*65","90*42*95","60*85*55"})

第三步:求和体积。上一步生成的是一个数组,四个型号的体积,使用TEXTJOI函数将四个体积(式子)用“+”连接。

TEXTJOIN("+",TRUE,SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2:D2,"JG-W",""),"D","*"),"H","*")))。

("100*80*65+80*45*65+90*42*95+60*85*55")

第四步:转换数值。将上述式子进行运算转换成数值。使用EVALUATE函数。

EVALUATE(TEXTJOIN("+",TRUE,SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2:D2,"JG-W",""),"D","*"),"H","*")))。

(记得CSE三键结束哦,可以同步观察直接回车结束的数据,悄悄告诉你,直接回车仅仅是第一个型号的体积啦)

欢迎像我一样函数小白的小伙伴一起学习~~

感谢具有不同思路大神的强囊相助与分享~~

不停地学习、坚持中成长,每天进步一点点!

吉林省
浏览 934
收藏
9
分享
9 +1
19
+1
全部评论 19
 
WPS超玩会大管家
WPS超玩会大管家

创作者俱乐部大管家

加上图片说明会更好哦~
· 广东省
回复
蒋春阳
蒋春阳

创作者俱乐部成员

收到,璐阳老师,下次改善,加些图片~~~
· 吉林省
1
回复
 
快乐的塔塔
快乐的塔塔

创作者俱乐部成员

围观大佬我想到就是第一种笨方法
· 广东省
回复
蒋春阳
蒋春阳

创作者俱乐部成员

慢慢来,时间会证明一切,每天进步一点点💪
· 吉林省
1
回复
 
邓华
邓华

WPS函数专家

春阳总结的很棒
· 广东省
回复
蒋春阳
蒋春阳

创作者俱乐部成员

谢谢邓老师!好记性不如烂笔头,我得用烂笔头多记记,转化成自己的财富😜
· 吉林省
回复
 
尹俊超
尹俊超

创作者俱乐部成员

有了蒋老师的分享,咱就是说以后再也不怕求体积了
· 上海
回复
蒋春阳
蒋春阳

创作者俱乐部成员

谢谢尹老师!
· 吉林省
回复
 
张俊
张俊

WPS函数专家

我的数组公式思路和蒋老师的方法二思路是一模一样的,我的第二个思路是用JS宏自定义函数方法来完成的,具体代码如下: function GET_SP(rng){ var arr=[]; for (var ar of rng.Value2.flat()){ var ar1=ar.match(/\d+/g) arr.push(ar1.join("*")) } return eval(arr.join("+")) } 输出结果可以查阅图1。感谢蒋老师的分享,让我又学到了不一样的知识,给蒋老师点赞。
· 上海
1
回复
蒋春阳
蒋春阳

创作者俱乐部成员

这个解题思路超纲了,有点看不懂😜
· 吉林省
1
回复
 
WPS认证小K
WPS认证小K

@金山办公

我有个更笨更傻的方法,直接智能分列,然后把分好的 数字列相乘相加哈哈,虽然笨但是也没啥理解成本
· 广东省
回复
蒋春阳
蒋春阳

创作者俱乐部成员

谢谢您的分享,智能分列确实也很方便的。为了加强函数训练,尽量采用函数解题的解题的呢😉
· 吉林省
回复
 
月桂醇
=EVALUATE(CONCAT(TEXT(MID(MID(A1,5,99),SEQUENCE(LEN(A1)-4),1),"0;0;0;!*"))) 仅供交流
· 河北省
回复
wps新路
wps新路

WPS函数专家

text 第二位的0可以省下,不会有负数
· 重庆
回复
 
清华学弟任泽岩
清华学弟任泽岩

创作者俱乐部成员

蒋老师这个解题过程和帖子的互动做的都很棒,让我在很开心的情况下学习到了新知识,给蒋老师点赞!
· 辽宁省
3
回复
蒋春阳
蒋春阳

创作者俱乐部成员

谢谢泽言师兄!这是大家的思路,为了更好地理解以及加深记忆,笨方法用起来,写出来留存,嘿嘿~
· 吉林省
2
回复