Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Excel中的字符串中提取十进制数_Excel_Excel Formula - Fatal编程技术网

从Excel中的字符串中提取十进制数

从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

我已经尝试了很多搜索,但是我仍然没有找到任何有效的方法

我在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
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确实是必要的,现在已进行编辑以包含此小数点