Как выполнить обратный поиск строк в Excel без использования VBA?


Answers

Это техника, которую я использовал с большим успехом:

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

Чтобы получить первое слово в строке, просто измените с ПРАВО на LEFT

=TRIM(LEFT(SUBSTITUTE(A1, " ", REPT(" ", 100)), 100))

Кроме того, замените A1 ячейкой, содержащей текст.

Question

У меня есть таблица Excel, содержащая список строк. Каждая строка состоит из нескольких слов, но количество слов в каждой строке отличается.

Используя встроенные функции Excel (нет VBA), существует ли способ изолировать последнее слово в каждой строке?

Примеры:

  Are you classified as human? -> human?
Negative, I am a meat popsicle -> popsicle
                  Aziz! Light! -> Light!



Я нашел this в google, проверенном в Excel 2003 и работает для меня:

=IF(COUNTIF(A1,"* *"),RIGHT(A1,LEN(A1)-LOOKUP(LEN(A1),FIND(" ",A1,ROW(INDEX($A:$A,1,1):INDEX($A:$A,LEN(A1),1))))),A1)

[edit] У меня недостаточно комментариев для комментариев, поэтому это кажется лучшим местом ... Ответ BradC также не работает с конечными пробелами или пустым ячеек ...
[2nd edit] на самом деле, он не работает ни для одного слова ...




=LEFT(A1,FIND(IF(
 ISERROR(
  FIND("_",A1)
 ),A1,RIGHT(A1,
  LEN(A1)-FIND("~",
   SUBSTITUTE(A1,"_","~",
    LEN(A1)-LEN(SUBSTITUTE(A1,"_",""))
   )
  )
 )
),A1,1)-2)



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

  1. Переверните строку («string one» станет «eno gnirts»).
  2. Используйте старый добрый Find (который жестко закодирован для слева направо).
  3. Снова переверните его в читаемую строку.

Как это звучит?




Скопируйте в столбец, выберите этот столбец и HOME> Редактирование> Найти и выбрать, Заменить:

Заменить все .

После звездочки есть пробел.




=RIGHT(A1,LEN(A1)-FIND("`*`",SUBSTITUTE(A1," ","`*`",LEN(A1)-LEN(SUBSTITUTE(A1," ",""))))) 



=RIGHT(TRIM(A1),LEN(TRIM(A1))-FIND(CHAR(7),SUBSTITUTE(" "&TRIM(A1)," ",CHAR(7),
LEN(TRIM(A1))-LEN(SUBSTITUTE(" "&TRIM(A1)," ",""))+1))+1)

Это очень надежное средство - оно работает для предложений без пробелов, ведущих / конечных пробелов, нескольких пробелов, нескольких ведущих / конечных пробелов ... и я использовал char (7) для разделителя, а не для вертикальной полосы «|» на всякий случай, это желаемый текстовый элемент.




Related