我已经尝试了很多搜索,但我仍然没有想出任何有用的东西。
我在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的情况下这样做。
谢谢
答案 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])