Как найти слово после определенного слова?

#excel #formula

#превосходить #формула

Вопрос:

Мне нужно найти одно слово после определенного слова, если у вас, ребята, есть какие-либо идеи в Формуле.

Например: У меня в колонке D2

P/N:101174 ДЖОЙСТИК, 2 ОСИ, НЕМЕЦКИЙ

Итак, слово после P/N: 101174 //это тот ответ, который я хочу

Я использую формулу :

 =TRIM(LEFT(SUBSTITUTE(TRIM(MID($D2,SEARCH("P/N",D2) LEN("P/N") 1,LEN(D2)))," ",REPT(" ",100)),COLUMN(D:D)*100))  

результатом будет :

 101174 JOYSTICK, 2 AXIS,  

И что означает эта формула? потому что я тоже гуглю это. Особенно 100 в последнем предложении-это зачем ?

Ответ №1:

Не уверен, что я точно понимаю, что вы собираетесь делать. Исходя из наилучшего подхода, я думаю, что это делает то, к чему вы стремитесь:

 =MID(D2,SEARCH("P/N:",D2) 4,SEARCH(" ",D2,SEARCH("P/N:",D2) 4)-SEARCH("P/N:",D2)-4)  

Что такое делает:
а) MID получает символы из строки, начиная с заданной точки и для заданного количества символов
б) SEARCH("P/N:",D2) 4 обеспечивает отправную точку, находя, с чего P/N: начинается, а затем добавляет свою собственную длину 4 , чтобы получить начальную точку следующего символа
c) SEARCH(" ",D2,SEARCH("P/N:",D2) 4) находит положение первого пробела после расположения "P/N:" (используя ту же логику, что и b)
d) -SEARCH("P/N:",D2)-4 вычитает позицию, с которой мы начали (чтобы получить длину слова)

Во всех случаях 4 это длина ссылочного/начального «слова».

Вышесказанное можно было бы значительно упростить, если P/N: бы (или что бы там ни было первым словом) всегда было слева.
но это, похоже, противоречит ОП (что подразумевает, что могут быть предшествующие символы).

Если это так, что ссылка/начальное «слово» всегда находится слева, то вы можете заменить поиск этого следующим (где 5 длина ведущего «слова» 1 и 4 длина ведущего «слова»):

 =MID(D2,5,SEARCH(" ",D2,4)-5)  

Дополнительная информация: SEARCH выполняет поиск с учетом регистра. Используйте FIND , если вы хотите, чтобы поиск учитывал регистр.

Комментарии:

1. Итак, слово после P/N: ` 101174 ` //это ответ, который я хочу

2. Здесь я в замешательстве. Оба варианта, которые я представил, делают именно это (с объясненными различиями). Вы (по сути) говорите, что «это работает»?

3. Я также в замешательстве, так как моя формула работала для извлечения строки.

Ответ №2:

Попробуйте это: =TRIM(MID(D10,LEN(LEFT(D10, SEARCH("P/N:",D10,1) 4)),SEARCH(" ",D10,1)-4))

Комментарии:

1. Итак, слово после P/N: ` 101174 ` //это ответ, который я хочу

Ответ №3:

Из вашего текущего примера кажется FILTERXML() , что это было бы лучше всего. Попробуй-

 =FILTERXML("lt;tgt;lt;sgt;"amp;SUBSTITUTE(FILTERXML("lt;tgt;lt;sgt;"amp;SUBSTITUTE(A1," ","lt;/sgt;lt;sgt;")amp;"lt;/sgt;lt;/tgt;","//s[contains(., 'P/N')]"),":","lt;/sgt;lt;sgt;")amp;"lt;/sgt;lt;/tgt;","//s[last()]")  

введите описание изображения здесь

Комментарии:

1. Итак, слово после P/N: ` 101174 ` //это ответ, который я хочу

2. @Biha Смотрите мою отредактированную формулу.