Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 4944|回复: 13

[已解决]按字符取值后相乘相加

[复制链接]
发表于 2021-1-23 13:39 | 显示全部楼层 |阅读模式
本帖最后由 Aotenjo168 于 2023-8-29 18:59 编辑

B列是想要的结果。
要求:
;之前是-加纯数字(或者说;之前-之后是纯数字),则*前面的数字乘以;前面的数字。
;之前不是-加纯数字(或者说;之前-之后不是纯数字),则只取值*前面的数量。
一个单元格可出现多个,则B列是各计算结果之和。


最佳答案
2021-1-23 15:48
Aotenjo168 发表于 2021-1-23 15:01
20个应该上限了。扩展也能实现吗。

=INT(SUM(10^MMULT(LOG(INDEX(TEXT(RIGHT(0&SUBSTITUTE(MID(SUBSTITUTE(SUBSTITUTE(A2,"*",";"),";",REPT(" ",99)),99*ROW($1:$40)-98,99),"-",REPT(" ",99)),99),"0;;1%;!1"),N(IF(1,2*ROW($1:$20)-2+COLUMN(A:B))))),{1;1})))
祝順心,南無阿彌陀佛!

表格.rar

6.34 KB, 下载次数: 15

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2021-1-23 14:02 | 显示全部楼层
先写一个相当复杂的凑数=SUM(IFERROR(10^MMULT(IFERROR(LOG(--TEXT(0&SUBSTITUTE(RIGHT(TRIM(MID(SUBSTITUTE(TRIM(MID(SUBSTITUTE(A2,";",REPT(" ",99)),{1;99;198;297},99)),"*",REPT(" ",50)),{1,50},50)),2),"-",),"0;;0;\1")),999),{1;1}),))
回复

使用道具 举报

 楼主| 发表于 2021-1-23 14:16 | 显示全部楼层
蝶·舞 发表于 2021-1-23 14:02
先写一个相当复杂的凑数=SUM(IFERROR(10^MMULT(IFERROR(LOG(--TEXT(0&SUBSTITUTE(RIGHT(TRIM(MID(SUBSTITUT ...

谢谢,但计算结果好像有误。
回复

使用道具 举报

发表于 2021-1-23 14:24 | 显示全部楼层
本帖最后由 蝶·舞 于 2021-1-23 14:30 编辑
Aotenjo168 发表于 2021-1-23 14:16
谢谢,但计算结果好像有误。

没发现还有三位数的,我改一下=INT(SUM(10^MMULT(LOG(TEXT(RIGHT(TRIM(MID(SUBSTITUTE(TRIM(MID(SUBSTITUTE(SUBSTITUTE(A2&REPT("-0.01*;",4),"-","-000"),";",REPT(" ",99)),{1;99;198;297},99)),"*",REPT(" ",50)),{1,50},50)),4),"0%;-0;;\1")),{1;1})))

评分

参与人数 2学分 +4 收起 理由
hcm19522 + 2 学习了
cutecpu + 2

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2021-1-23 14:41 | 显示全部楼层
蝶·舞 发表于 2021-1-23 14:24
没发现还有三位数的,我改一下=INT(SUM(10^MMULT(LOG(TEXT(RIGHT(TRIM(MID(SUBSTITUTE(TRIM(MID(SUBSTITU ...

谢谢。其实,情况还是颇为复杂的,单元格里多个时,不一定最多3个,比如A2,有可能是5个6个10个15个,基本20个应该上限了。

回复

使用道具 举报

 楼主| 发表于 2021-1-23 14:42 | 显示全部楼层
蝶·舞 发表于 2021-1-23 14:24
没发现还有三位数的,我改一下=INT(SUM(10^MMULT(LOG(TEXT(RIGHT(TRIM(MID(SUBSTITUTE(TRIM(MID(SUBSTITU ...

比如A2单元格复制增加几个,好像就超出计算范围了。
回复

使用道具 举报

发表于 2021-1-23 14:46 | 显示全部楼层
那公式也能实现,扩展一下就行,不过如果数据行多的话,还是建议你走VBA这条路吧
回复

使用道具 举报

 楼主| 发表于 2021-1-23 15:01 | 显示全部楼层
蝶·舞 发表于 2021-1-23 14:46
那公式也能实现,扩展一下就行,不过如果数据行多的话,还是建议你走VBA这条路吧

20个应该上限了。扩展也能实现吗。
回复

使用道具 举报

发表于 2021-1-23 15:48 | 显示全部楼层    本楼为最佳答案   
Aotenjo168 发表于 2021-1-23 15:01
20个应该上限了。扩展也能实现吗。

=INT(SUM(10^MMULT(LOG(INDEX(TEXT(RIGHT(0&SUBSTITUTE(MID(SUBSTITUTE(SUBSTITUTE(A2,"*",";"),";",REPT(" ",99)),99*ROW($1:$40)-98,99),"-",REPT(" ",99)),99),"0;;1%;!1"),N(IF(1,2*ROW($1:$20)-2+COLUMN(A:B))))),{1;1})))
祝順心,南無阿彌陀佛!

评分

参与人数 2学分 +4 收起 理由
Aotenjo168 + 2 学习了
hcm19522 + 2 学习了

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2021-1-23 15:56 | 显示全部楼层
cutecpu 发表于 2021-1-23 15:48
=INT(SUM(10^MMULT(LOG(INDEX(TEXT(RIGHT(0&SUBSTITUTE(MID(SUBSTITUTE(SUBSTITUTE(A2,"*",";"),";",REPT ...

多谢师父,阿弥陀佛~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-26 07:45 , Processed in 0.190899 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表