Как извлечь последнюю часть строки в Excel после последнего подчеркивания - PullRequest
4 голосов
/ 04 августа 2020

У меня есть следующий пример данных:

1. animated_brand_300x250
2. animated_brand_300x600
3. customaffin_greenliving_solarhome_anim_outage_offer

Как извлечь строку из последнего подчеркивания в Microsoft Excel?

Я хочу извлечь значение перед первым подчеркиванием и после последнее подчеркивание.

Первое подчеркивание:

=LEFT(B6,SEARCH(“_”,B6)-1)

вернет animated и customaffin в качестве вывода.

Как вернуть строку после последнего подчеркивания?

Ответы [ 2 ]

4 голосов
/ 04 августа 2020

Некоторые другие варианты могут быть:

=TRIM(RIGHT(SUBSTITUTE(A1,"_",REPT(" ",100)),100))

Или использовать FILTERXML, что теоретически является лучшим вариантом:

=FILTERXML("<t><s>"&SUBSTITUTE(A1,"_","</s><s>")&"</s></t>","//s[last()]")

Эксклюзивный метод ExcelO365 может даже использовать XLOOKUP:

=REPLACE(A1,1,XLOOKUP("_",MID(A1,SEQUENCE(LEN(A1)),1),SEQUENCE(LEN(A1)),,0,-1),"")

Или:

=RIGHT(A1,MATCH("_",MID(A1,SEQUENCE(LEN(A1),,LEN(A1),-1),1),0)-1)
3 голосов
/ 04 августа 2020

Вы можете найти строку после последнего _ с помощью функции RIGHT. Сложная часть - найти позицию последнего _.

Сначала нам нужно определить, сколько _ их. Это можно сделать, удалив все _ и сравнив длину обеих строк:

LEN(A1)-LEN(SUBSTITUTE(A1;"_";""))

Поскольку теперь мы знаем, что это второе вхождение _, которое нам нужно искать, мы можем использовать SUBSTITUTE функция для замены второго вхождения _ другим символом (это должен быть символ, не являющийся частью вашей исходной строки - я выбрал #).

Теперь мы используем функция FIND для поиска позиции символа #. Эта позиция теперь может быть передана функции RIGHT.

Окончательная формула будет:

=RIGHT(A1;LEN(A1)-FIND("#";SUBSTITUTE(A1;"_";"#";LEN(A1)-LEN(SUBSTITUTE(A1;"_";"")));1))

Получить последнюю строку после символа, который встречается несколько раз в Excel

...