#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 Смотрите мою отредактированную формулу.