Как я могу использовать функцию Excel (LEFT / RIGHT / MID) для извлечения строки, которая окружена тем же символом? - PullRequest
0 голосов
/ 07 марта 2019

Моя строка похожа; например: столбец A2: Это тестовая строка .

Где я хочу извлечь слово ' - это '. Я знаю, что я должен использовать функцию MID с поиском здесь.

= MID (A2, SEARCH ("", A2) + 1, SEARCH ("", A2) -2) <- это возвращает '<strong> равно '

Скажем, я хочу найти второе вхождение "" (это означает, что я не уверен в длине символов в моих больших листах Excel. Слова разделены дефисами или пробелами), поэтому я легко могу извлечь слово ' is 'без вычисления символа.

Но поиск находит первое вхождение ''. Как я могу использовать search или find , чтобы извлечь слово "is" без +1, -2 как вычисления символов?

Ответы [ 4 ]

3 голосов
/ 07 марта 2019

Если вы не обязаны использовать ТОЛЬКО эти функции:

Если у вас есть версия Excel, включающая функцию FILTERXML, вы можете использовать эту формулу для извлечения 2-го слова:

=INDEX(FILTERXML("<t><s>"&SUBSTITUTE(TRIM(A1)," ","</s><s>")&"</s></t>","//s"),2)

Если ваша версия не имеет этой функции, вы можете использовать:

=INDEX(TRIM(MID(SUBSTITUTE(TRIM(A1)," ",REPT(" ",99)),seq_99,99)),2)

, где seq_99 - Именованная формула:

seq_99 refers to:  =IF(ROW(INDEX($1:$65535,1,1):INDEX($1:$65535,255,1))=1,1,(ROW(INDEX($1:$65535,1,1):INDEX($1:$65535,255,1))-1)*99)

Оба разбивают строку намассив, а затем используйте функцию INDEX для возврата нужного элемента в этом массиве.

Вам может потребоваться изменить часть функций SUBSTITUTE для обработки пробелов и дефисов или любых других разделителейВы можете иметь.

3 голосов
/ 07 марта 2019

Если вы сделаете все пробелы одинаковой ширины со всей исходной строкой, вы можете легко выбрать второе слово с помощью MID и TRIM его обратно в исходное.

'first word
=trim(left(substitute(a2, " ", rept(" ", len(a2))), len(a2)))
'second word
=trim(mid(substitute(a2, " ", rept(" ", len(a2))), len(a2)*1, len(a2)))
'third word
=trim(mid(substitute(a2, " ", rept(" ", len(a2))), len(a2)*2, len(a2)))
'last word
=trim(right(substitute(a2, " ", rept(" ", len(a2))), len(a2)))

len(a2)*1 (начальная точка MID) - это измерение, которое определяет, какое слово извлекается.

1 голос
/ 07 марта 2019

Измените приведенную ниже формулу и попробуйте:

=MID(A1,FIND(" ",A1,1)+1,FIND(" ",A1,FIND(" ",A1)+1)-FIND(" ",A1,1)-1)

enter image description here

1 голос
/ 07 марта 2019

Вы можете искать следующую часть строки, используя mid, чтобы получить остаток строки после первой и затем искать эту подстроку.

Value                  Description         Formula
This is a test string  Original string     #N/A
5                      Pos of first space  =SEARCH(" ",A2)
is a test string       Rest of string      =MID(A2,A3+1,LEN(A2))
3                      Rel pos 2nd space   =SEARCH(" ",A4)
is                     Extracted “is”      =MID(A2,A3+1,A5-1)

Combined formula:
=MID(A2,SEARCH(" ",A2)+1,SEARCH(" ",MID(A2,SEARCH(" ",A2)+1,LEN(A2)))-1)

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

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