Excel公式二动态提取两个字符串之间的字符串

时间:2019-07-04 19:24:51

标签: excel excel-formula

我需要在其他两个字符串之间提取一个字符串,其中模式几乎总是相同的(必须使用公式而不是VBA来完成):

数据结构:

Data                                                      Extract Country
12345678 111 Test Test 132433 172282 111 USA 111 ABCD         USA
123456 111 Test Test 132433 172282 111 GER 111 AB             GER
1231231 222 Test Test 132433 172282 111 JAP 111 A             JAP

我遇到的问题是要提取的数据始终在111 USA 111之间,但是在开头也有一个字符串“ 111”,因此我需要查找第二次出现的111,除非是这种情况我需要在这里找到第一次出现的日本。

如何使用Excel公式动态地执行此操作,尝试了以下几乎可行的方法:

MID(A2,FIND(CHAR(3),SUBSTITUTE(A2,"111",CHAR(3),2))+3,4)

1 个答案:

答案 0 :(得分:2)

假设您的国家/地区代码始终为3个字母长,并且始终后跟" 111"(请注意111之前的空格),那么以下公式就可以解决问题:

=MID(A1,FIND("@",SUBSTITUTE(A1,"111","@",(LEN(A1)-LEN(SUBSTITUTE(A1,"111","")))/LEN("111")))-4,3)

(此公式的关键部分来自@tigeravatar的答案here

edit 1:几乎忘了提及:我还假设@没有出现在字符串中的任何位置。如果是这样,请将其更改为公式中的另一个符号

edit 2:基本上,我使用Tigeravatar的公式来查找"111"的最后一次出现的位置,然后我们减去4(" 111"为四个字符)并将其用作起始位置用于从字符串中提取三个字符的MID语句