Excel формула два динамически извлекает строку между двумя строками - PullRequest
0 голосов
/ 04 июля 2019

Мне нужно извлечь строку между двумя другими строками, где шаблон почти всегда одинаков (это должно быть сделано с формулой, а не 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 Ответ

2 голосов
/ 04 июля 2019

Если ваш код страны всегда состоит из 3 букв и всегда сопровождается " 111" (обратите внимание на пробел перед 111), тогда следующая формула должна помочь:

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

(критическийчасть этой формулы взята из ответа @ tigeravatar здесь )

edit 1: Почти забыл упомянуть: я также предположил, что @ не появилось нигде в вашей строке.если это так, замените его на другой символ в формуле

edit 2: По сути, я использую формулу tigeravatar, чтобы найти позицию последнего вхождения "111", тогда мы вычтем 4 (" 111" будучидлиной четыре символа) и использовать его в качестве начальной позиции для оператора MID, который извлекает три символа из строки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...