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

时间:2014-02-14 13:15:30

标签: 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
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位的下划线“_”后。

我需要从这些字符串中提取十进制数字到一个新列中,所以我留下1.1,1.13,1.14,4.26等。

我尝试过各种MID,LEFT,LEN,RIGHT的组合,但无济于事,试图找到最后一段时间的位置。

任何人都可以解释如何实现这一目标吗?理想情况下,我想在没有VBA的情况下这样做。

谢谢

6 个答案:

答案 0 :(得分:1)

你在这里:

=VALUE(MID(A1,SEARCH("_",A1)+1,SEARCH(".",A1,SEARCH(".",A1,SEARCH("_",A1)+1)+1)-(SEARCH("_",A1)+1)))

以下是=VALUE(MID(...))内的内容:

A1 - 整个字符串本身

SEARCH("_",A1)+1 - 在"_"之后找到号码起始位置。

SEARCH(".",A1,SEARCH(".",A1,SEARCH("_",A1)+1)+1)-(SEARCH("_",A1)+1) - 查找号码长度 - 在第一个"."减去号码起始位置后的第二个"."的位置。

答案 1 :(得分:1)

尝试三种功能:

=MID(A1,14,FIND("#",SUBSTITUTE(A1,".","#",3))-14)

答案 2 :(得分:0)

试试这个 - 如果_的位置不一定是13。

=MID(A1,FIND("_",A1,1)+1,FIND("¬¬",SUBSTITUTE(A1,".","¬¬",LEN(A1)-LEN(SUBSTITUTE(A1,".",""))))-FIND("_",A1,1)-1)

或者,如果_总是13

=MID(A1,14,FIND("¬¬",SUBSTITUTE(A1,".","¬¬",LEN(A1)-LEN(SUBSTITUTE(A1,".",""))))-14)

答案 3 :(得分:0)

使用此:

=VALUE(TRIM(LEFT(SUBSTITUTE(RIGHT(A1;LEN(A1)-FIND("_";A1));".";REPT(" ";LEN(A1));2);LEN(A1))))

假设值在A1

答案 4 :(得分:0)

远非理想,但配方比目前提供的解决方案更短:

=SUBSTITUTE(A1,".","_",3)  

Catch是需要将公式转换为值,使用分隔符_进行解析(小心确保列数据格式为文本)并删除剩余列。

答案 5 :(得分:-1)

当字符串Amend.Clause_1.1.AddMCQ在A1

中时
=Find(".",A1,Find(".",A1)+1) 

将给出第二个小数点的位置,然后你应该能够提取十进制数。

语法是

FIND(find_text,within_text,[start_num])