从Excel中的字符串中提取十进制数
我已经尝试了很多搜索,但是我仍然没有找到任何有效的方法 我在a列中有一系列字符串从Excel中的字符串中提取十进制数,excel,excel-formula,Excel,Excel Formula,我已经尝试了很多搜索,但是我仍然没有找到任何有效的方法 我在a列中有一系列字符串 Amend.Clause_1.1.AddMCQ Amend.Clause_1.1.AddNo Amend.Clause_1.1.AddRepeat Amend.Clause_1.13.AddRepeat Amend.Clause_1.13.AddTitle Amend.Clause_1.13.AddUTQ Amend.Clause_2.8.Heading_Edit Amend.Clause_2.8.MCQ Amen
Amend.Clause_1.1.AddMCQ
Amend.Clause_1.1.AddNo
Amend.Clause_1.1.AddRepeat
Amend.Clause_1.13.AddRepeat
Amend.Clause_1.13.AddTitle
Amend.Clause_1.13.AddUTQ
Amend.Clause_2.8.Heading_Edit
Amend.Clause_2.8.MCQ
Amend.Clause_2.8.Remove
Amend.Clause_4.26.AddUTQ
Amend.Clause_4.26.Heading_Edit
Amend.Clause_4.26.MCQ
Amend.Clause_5.15.AddMCQ
Amend.Clause_5.15.AddNo
Amend.Clause_5.15.AddRepeat
正如您所看到的,数字总是从同一个位置开始,在第13位的下划线“\u1”之后
我需要将这些字符串中的十进制数提取到一个新的列中,这样剩下1.1、1.13、1.14、4.26等等
我尝试了各种组合,包括中、左、蓝、右,但都没有效果,试图找到上一节课的位置
有人能解释一下如何做到这一点吗?理想情况下,我希望在没有VBA的情况下完成此操作
谢谢如果u的位置不一定是13,试试这个
=MID(A1,FIND("_",A1,1)+1,FIND("¬¬",SUBSTITUTE(A1,".","¬¬",LEN(A1)-LEN(SUBSTITUTE(A1,".",""))))-FIND("_",A1,1)-1)
或者如果uu总是13
=MID(A1,14,FIND("¬¬",SUBSTITUTE(A1,".","¬¬",LEN(A1)-LEN(SUBSTITUTE(A1,".",""))))-14)
当字符串Amend.Clause_1.1.AddMCQ位于A1中时
=Find(".",A1,Find(".",A1)+1)
将给出第二个小数点的位置,然后您应该能够提取小数点
语法是
查找(查找文本,在文本中,[start\u num])这里是:
=VALUE(MID(A1,SEARCH("_",A1)+1,SEARCH(".",A1,SEARCH(".",A1,SEARCH("_",A1)+1)+1)-(SEARCH("_",A1)+1)))
下面是=值(中间(…)
中的内容:
A1
-整个字符串本身
搜索(“25;”,A1)+1
-查找号码起始位置-就在“25;”之后
SEARCH(“.”,A1,SEARCH(“.”,A1,SEARCH(“,”,A1)+1)-(SEARCH(“,”,A1)+1)
-查找数字长度-第一个”之后的第二个“
位置减去数字起始位置。使用以下方法:
=VALUE(TRIM(LEFT(SUBSTITUTE(RIGHT(A1;LEN(A1)-FIND("_";A1));".";REPT(" ";LEN(A1));2);LEN(A1))))
假设值为A1尝试使用三个功能:
=MID(A1,14,FIND("#",SUBSTITUTE(A1,".","#",3))-14)
远不理想,但配方比目前提供的解决方案短:
=SUBSTITUTE(A1,".","_",3)
需要注意的是,公式需要转换为值,使用分隔符(注意确保列数据格式为文本)进行解析,并删除多余的列。感谢您的帮助-此公式会生成一个错误。不,没有错误我用您的数据尝试过,可能您需要替换字段分隔符“;”by“,”(不同的区域设置):)因此这会查找第二个小数点,因为它会在第一个小数点的位置后设置起始数字?SmartYes,您可以将1添加到内部查找结果中,以确保它超过第一个小数点。正如我上面所建议的,添加1确实是必要的,现在已进行编辑以包含此小数点