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

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

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

Примеры:

 Вы классифицированы как человек?  -> человек? Отрицательный, я мясное эскимо -> эскимо Азиз!  Свет!  -> Light! 

Этот протестирован и работает (на основе оригинального сообщения Брэда):

  = RIGHT (  A1, LEN (A1) -FIND ("|", ПОДСТАВИТЬ (A1, "", "|", LEN (A1) -LEN (ПОДСТАВИТЬ (A1, "", "")))))  

Если ваши исходные строки могут содержать вертикальную черту «|» символ, а затем замените оба в приведенном выше символе, который не появится в вашем источнике. (Я подозреваю, что оригинал Брэда был сломан, потому что в переводе был удален непечатаемый символ).

Бонус: как это работает (справа налево):

LEN (A1) -LEN (SUBSTITUTE (A1, "", "")) — количество пробелов в исходной строке
SUBSTITUTE (A1, "", "|", ...) — заменяет только final пробел на |
НАЙТИ ("|", ...) — Находит абсолютную позицию замененного | (это был последний пробел)
Right ( A1, LEN (A1) - ...)) — возвращает все символы после этого |

EDIT: для учета случая, когда исходный текст не содержит пробелов, добавьте в начало формулы следующее:

  = IF (ISERROR (FIND ("", A1  )), A1, ...)  

создание всей формулы сейчас:

  = IF (ISERROR (FIND ("  ", A1)), A1, RIGHT (A1, LEN (A1) - НАЙТИ (" | ", ПОДСТАВИТЬ (A1," "," | ", LEN (A1) -LEN (ПОДСТАВИТЬ (A1," "," "  ))))))  

Или вы можете использовать синтаксис = IF (COUNTIF (A1, "* *") другой версии.

Если исходная строка может содержать пробел в последней позиции добавить функцию обрезки при подсчете всех пробелов: Делаем функцию следующей:

  = IF (ISERROR (FIND ("", B2)), B2  , ВПРАВО (B2; LEN (B2) - НАЙТИ ("|", ПОДСТАВИТЬ (B2, "", "|", LEN (ОБРЕЗАТЬ (B2)) - LEN (ПОДСТАВИТЬ (B2, "", ""))))  ))  

84

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

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

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

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

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

Улучшите этот ответ
отредактировано 13 июля ’12, 16:45
Сообщество ♦
111 серебряный значок
ответил 02 марта ’12 в 1:31
  • 2
    Работает для меня — просто заменил первый "" моим разделителем. Два 100 , кажется, ограничивают его строкой из 100 символов, если я не ошибаюсь, — Бенджинир, 22 января 2014 г., 17:14
  • 1
    Если мы используем другой разделитель, нам нужно убрать его в конце тоже, например = TRIM (SUBSTITUTE (RIGHT (SUBSTITUTE (A1, ".", REPT (".", 100)), 100), ".", "")) — dumbledad 31 июля ‘ 15 в 8:44
  • 7
    Очень хитрый метод. Он заменяет каждое пробел на 100 пробелов, а затем возвращает последние 100 символов без начальных/конечных пробелов. — Zenadix 21 августа 2015, 19:24
  • @Benjineer Я думаю, что это работает для строк длиной более 100 символов. 100 символов ограничивают размер одного слова. Вы берете правую (или левую) сотню символов … если слово длиной в 101 символ, у вас возникнут проблемы, но если строка в общей сложности 100 символов … с 3 пробелами … будет дополнен примерно до 400-символьной строки и все еще работает. Джерри Бокеру — Очень элегантно, спасибо. — Tin Bum 22 фев, в 23:49
добавить комментарий |

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

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

Чтобы получить первое слово в строке, просто измените с RIGHT на LEFT

  = ОБРЕЗАТЬ (ЛЕВО (ПОДСТАВИТЬ (A1, "", ПОВТОР ("", 100)), 100))  

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


22

Более надежная версия ответа Джерри:

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

Это работает независимо от длины строки, начальных или конечных пробелов или чего-либо еще, и это все равно довольно коротко и просто.

Улучшите этот ответ
ответил 01 июня 2013, 1:03
  • 2
    Это отличная формула. Я изменил формулу на = TRIM (RIGHT (SUBSTITUTE (TRIM (A1), ".", REPT ("", LEN (TRIM (A1)))), LEN (TRIM (A1)))) , чтобы получить расширение файла. — Адарш Мадреча, 30 мая 2016, 09:47
  • 2
    Еще один SUBSTITUTE позволяет ему работать с любым символом, а не только с пробелами. = ОБРЕЗАТЬ (ПОДСТАВИТЬ (ПРАВО (ПОДСТАВИТЬ (ОБРЕЗАТЬ (A1), "/", ПОВТОР ("/", LEN (ОБРЕЗАТЬ (A1)))), LEN (ОБРЕЗАТЬ (A1))), "/ "," ")) , где»/»- ограничивающий символ. — PProteus 07 дек. ’18 в 19:53
  • @Joefinkle, это действительно краткое и умное решение. Он работает очень хорошо, просто упомяну, что если разделитель является строкой, он работает не во всех случаях, вот пример разделителя: ";" (точка с запятой, окруженная пробелы) с входным значением: «Технологический спринт 24; Спринт 4» , он возвращает: «; Спринт 4» . Я использую решение, добавленное @PProteus. — Дэвид Лил 01 июля ’19 в 20:24
  • Если разделитель является строкой, возможным обходным решением было бы заменить его перед этим специальным символом, например, заменив в формуле @Proteus TRIM ( A1) на: TRIM (SUBSTITUTE (A1, "strDelimeter", ";")) во всех местах, чтобы иметь новый разделитель символов: ";" или даже лучше с помощью функции char () , чтобы найти действительно неожиданный символ. — Дэвид Лил 01 июля ’19 в 20:46
  • 1
    @PProteus, вам не нужна функция TRIM после добавления второго SUBSTITUTE для общего решения для одного символа. Формула обеспечивает ожидаемый результат, исключающий эту часть: = SUBSTITUTE (RIGHT (SUBSTITUTE (TRIM (A1), ";", REPT (";", LEN (TRIM (A1)))), LEN (TRIM (A1))), ";", "") — Дэвид Лил 01 июля ’19 в 21:01
добавить комментарий |

Более надежная версия ответа Джерри:

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

Это работает независимо от длина строки, начальные или конечные пробелы или что-то еще, и это все еще довольно короткое и простое.


13

Я нашел это в Google, протестировал в Excel 2003 и у меня это работает:

  = IF (COUNTIF (A1, "* *"), RIGHT (A1, LEN (A1) -LOOKUP (LEN (A1)  ), НАЙТИ ("", A1, ROW (INDEX ($ A: $ A, 1,1): INDEX ($ A: $ A, LEN (A1), 1))))), A1)   

[edit] У меня недостаточно комментариев для комментариев, так что это лучшее место … Ответ BradC также не работает с конечными пробелами или пустыми ячейками …
[2-е изменение] на самом деле это не работает и для отдельных слов …

Улучшите этот ответ
отредактировано 8 декабря ’08 в 18:44
ответил 8 декабря ’08 в 18:12
Ближайшее решение, но я бы добавил Trim (), поскольку конечный пробел его сломает. — EBGreen, 8 декабря 2008 г., 18:15
  • Верно, вероятно, проще всего обрезать () в промежуточной ячейке, а затем применить указанную выше формулу к промежуточной ячейке. Кроме того, выдает 0, если ячейка оказывается пустой, поэтому ее также можно обернуть с помощью isblank () — Джон, 8 декабря 2008 г., 18:22
  • добавить комментарий |

    Я нашел это в Google, протестировал в Excel 2003 и у меня работает:

      = ЕСЛИ (СЧЁТЕСЛИ (A1; "* *"), ВПРАВО (A1, LEN (A1) -ПРОСМОТР (LEN (A1), FIND ("", A1, ROW (INDEX ($ A: $ A, 1,  1): INDEX ($ A: $ A, LEN (A1), 1))))), A1)  

    [edit] У меня недостаточно комментариев для комментариев , так что это кажется лучшим местом … Ответ BradC также не работает с конечными пробелами или пустыми ячейками …
    [2-е изменение] на самом деле, он не работает и для отдельных слов …


    3
      = RIGHT (  ОБРЕЗАТЬ (A1), LEN (ОБРЕЗАТЬ (A1)) - НАЙТИ (СИМВОЛ (7), ПОДСТАВИТЬ ("" & ОБРЕЗАТЬ (A1), "", СИМВОЛ (7), LEN (ОБРЕЗАТЬ (A1)) - LEN (ПОДСТАВИТЬ ("  "& TRIM (A1)," "," ")) + 1)) + 1)  

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

    Улучшите этот ответ
    отредактировано 6 января ’12 в 17:02
    Девин Берк
    12. 1k1111 золотых знаков4949 серебряных знаков7979 бронзовых знаков
    13 мая ’11 в 16: 412011-05-13 16:41
    • У меня работает в Excel 2010. Спасибо — Рюдигер Вольф 29 июня ’12 в 17:16
    добавить комментарий |

      = RIGHT (TRIM (A1), LEN (TRIM (A1)) - FIND (CHAR (7),  ПОДСТАВИТЬ ("" & ОБРЕЗАТЬ (A1), "", СИМВОЛ (7), LEN (ОБРЕЗАТЬ (A1)) - LEN (ПОДСТАВИТЬ ("" & ОБРЕЗАТЬ (A1), "", "")) + 1)) + 1)   

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


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

    Улучшите этот ответ
    отредактировано 12 мая ’12 в 9:20
    Cody Серый ♦
    219k4141 золотых знаков455455 серебряных знаков534534 бронзовых знака
    ответ дан 8 дек ’08 в 17:52
    • Вы это тестировали? У меня не работает с «Вы классифицированы как человек?» — Эд Гиннес, 8 дек., 17:55
    • Нет, не работает. Однако есть некоторые интересные элементы. LEN (A1) -LEN (SUBSTITUTE (A1, «», «») дает вам количество пробелов в строке. — BradC, 8 декабря 2008 г., 18:04
    • Это интересная функция. Жаль, что она не работает. Мне нравится трюк за умение подсчитывать количество пробелов. — Джеймс, 8 дек., 18:24
    • @Brad: Я отредактировал ваше сообщение, чтобы отобразить символы *. В оригинале они не были напечатаны должным образом. С ними все работает. +1 — е. Джеймс 8 дек. ’08 в 18:38
    добавить комментарий |

      = RIGHT (A1, LEN (A1) -FIND ("` * `", SUBSTITUTE (A1, "  "," `*` ", LEN (A1) -LEN (ПОДСТАВИТЬ (A1," "," ")))))  

    2

    Это очень чисто, компактно и хорошо работает.

      {= RIGHT (A1, LEN (A1) -MAX (IF (MID (A1, ROW (1: 999), 1) = "", ROW (1: 999), 0)))}  

    Это не ловушка ошибок при отсутствии пробелов или одного слова, но это легко добавить.

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

      {= RIGHT (TRIM (A1), LEN (TRIM (A1)) - MAX (IF (MID (TRIM (A1)  ), ROW (1 $: 999), 1) = "", ROW (1 $: 999 $), 0)))}  

    Улучшите этот ответ
    отредактировано 12 мая ’12 в 9:20
    вики сообщества

    4 оборота, 2 пользователя 72%
    gabrielu
    • Круто. Это действительно интересное использование функций массива! Я не ожидал получить еще один ответ по прошествии столь длительного времени. Спасибо, что поделились. — e.James 27 окт. ’10 в 1:21
    добавить комментарий |

    Это очень чисто, компактно и хорошо работает.

      {= RIGHT  (A1, LEN (A1) -MAX (IF (MID (A1, ROW (1: 999), 1) = "", ROW (1: 999), 0)))}  

    Это не ловушка ошибок для пробелов или одного слова, но это легко добавить.

    Изменить:
    Это обрабатывает завершение пробелы, одно слово и сценарии с пустой ячейкой. Я не нашел способ сломать это.

      {= RIGHT (TRIM (A1), LEN (TRIM (A1)) - MAX (IF (MID (TRIM (A1), ROW ($ 1: 999 $), 1  ) = "", ROW ($ 1: $ 999), 0)))}  

    2

    Чтобы добавить к ответам Джерри и Джо, если вы хотите найти текст ПЕРЕД последним словом, которое вы можете использовать:

      = TRIM (LEFT (SUBSTITUTE (TRIM (A1), "", REPT ("", LEN (TRIM (A1)))), LEN (SUBSTITUTE (TRIM (A1), "", REPT ("",  LEN (ОБРЕЗАТЬ (A1))))) - LEN (ОБРЕЗАТЬ (A1))))  

    Если в строке A1 указать «Мой котенок», это приведет к «Мой маленький» (где Джо и Джерри дали бы «кот»

    Таким же образом, как Джерри и Джо выделяют последнее слово, это затем просто получает все слева от него (затем обрезает его обратно)

    Улучшите этот ответ
    ответил 24 июля ’13 в 7:22
    добавить комментарий |

    Чтобы добавить к ответам Джерри и Джо, если вы хотите найти текст ПЕРЕД последним словом, которое вы можете использовать:

      = ОБРЕЗАТЬ (ЛЕВО (ПОДСТАВИТЬ (ОБРЕЗАТЬ (A1), "", ПОВТОР ("", LEN (ОБРЕЗАТЬ (A1)))), LEN (ПОДСТАВИТЬ (ОБРЕЗАТЬ (A1),  "", REPT ("", LEN (TRIM (A1))))) - LEN (TRIM (A1))))  

    С ‘My little cat’ в A1 приводит к ‘My little’ (где Джо и Джерри дали бы ‘кота’

    Таким же образом, как Джерри и Джо выделяют последнее слово, это затем просто получает все, что находится слева от него (тогда обрезает его)


    1

    Представьте себе строку можно поменять местами. Тогда это действительно просто. Вместо работы со строкой:

      "My little cat" (1)  

    вы работаете с

      "tac elttil yM" (2)  

    с = LEFT (A1 ; НАЙТИ (""; A1) -1) в A2 вы получите "My" с (1) и "tac" с (2), который перевернут "cat" , последнее слово в (1).

    Есть несколько VBA, чтобы перевернуть строку. Я предпочитаю общедоступную функцию VBA ReverseString .

    Установите ее, как описано выше. Затем с вашей строкой в ​​A1, например, «Мой маленький кот» и этой функцией в A2:

      = ReverseString (LEFT (ReverseString (  A1); IF (ISERROR (FIND (""; A1)); LEN (A1); (FIND (""; ReverseString (A1)) - 1))))  

    вы увидите "cat" в A2.

    В приведенном выше методе предполагается, что слова разделены пробелами. Предложение IF предназначено для ячеек, содержащих отдельные слова = без пробелов в ячейке. Примечание. Полезны также TRIM и CLEAN исходная строка. В принципе, он переворачивает всю строку из A1 и просто находит первый пробел в перевернутой строке, который находится рядом с последним (перевернутым) словом (т. Е. "tac" ). LEFT выбирает это слово, и другой переворот строки восстанавливает исходный порядок слова ( "cat" ). -1 в конце оператора FIND удаляет пробел.

    Идея состоит в том, что его легко извлечь первое (!) слово в строке с LEFT и FIND в первом пробеле. Однако для последнего (!) Слова функция RIGHT — неправильный выбор, когда вы пытаетесь это сделать, потому что, к сожалению, FIND не имеет флага для направления, в котором вы хотите анализировать свою строку.

    Следовательно, вся строка просто переворачивается. LEFT и FIND работают как обычно, но извлеченная строка переворачивается. Но это не проблема, если вы знаете, как перевернуть строку. Эту работу выполняет первый оператор ReverseString в формуле.

    Улучшите этот ответ
    отредактировано 01 декабря 2012 г. в 17:02
    Greg Bacon
    119k2828 золотых знаков178178 серебряных знаков234234 бронзовых знака
    ответ дан 21 янв ’11 в 14:00
    • Это намного проще, чем все другие варианты здесь, большое спасибо !! Почему Find не может иметь обратный поиск или замену — я, кажется, припоминаю что-то, связанное с использованием отрицательного числа для выполнения обратного поиска, но явно не vba …. — Крейг Ламби 05 окт. /div>
    • 4
      OP не просил VBA. — Tripp Kinetics 02 июля ’18, в 2:53
    • И это безумие! Если вы собираетесь использовать VBA, вы могли бы так же легко получить обратную находку — Дензил Ньюман, 28 фев. 2019, 16:18
    добавить комментарий |

    Представьте, что строку можно перевернуть. Тогда это действительно просто. Вместо работы со строкой:

      «Моя маленькая кошка» (1)  

    вы работаете

      "tac elttil yM" (2)  

    С = LEFT (A1; FIND (""; A1) -1 ) в A2 вы получите "My" с (1) и "tac" с (2), который перевернут "кошка" , последнее слово в (1).

    Есть несколько VBA для переворота строки. Я предпочитаю общедоступную функцию VBA ReverseString .

    Установите ее, как описано выше. Затем с вашей строкой в ​​A1, например, «Мой маленький кот» и этой функцией в A2:

      = ReverseString (LEFT (ReverseString (  A1); IF (ISERROR (FIND (""; A1)); LEN (A1); (FIND (""; ReverseString (A1)) - 1))))  

    вы увидите "cat" в A2.

    В приведенном выше методе предполагается, что слова разделены пробелами. Предложение IF предназначено для ячеек, содержащих отдельные слова = без пробелов в ячейке. Примечание. Полезны также TRIM и CLEAN исходная строка. В принципе, он переворачивает всю строку из A1 и просто находит первый пробел в перевернутой строке, который находится рядом с последним (перевернутым) словом (т. Е. "tac" ). LEFT выбирает это слово, и другой переворот строки восстанавливает исходный порядок слова ( "cat" ). -1 в конце оператора FIND удаляет пробел.

    Идея состоит в том, что его легко извлечь первое (!) слово в строке с LEFT и FIND в первом пробеле. Однако для последнего (!) Слова функция RIGHT — неправильный выбор, когда вы пытаетесь это сделать, потому что, к сожалению, FIND не имеет флага для направления, в котором вы хотите анализировать свою строку.

    Следовательно, вся строка просто переворачивается. LEFT и FIND работают как обычно, но извлеченная строка переворачивается. Но это не проблема, если вы знаете, как перевернуть строку. Эту работу выполняет первый оператор ReverseString в формуле.


    1
      = LEFT (A1, FIND (IF (ISERROR (FIND ("_", A1)), A1, RIGHT (A1, LEN (A1) -  НАЙТИ ("~", ПОДСТАВИТЬ (A1, "_", "~", LEN (A1) -LEN (ПОДСТАВИТЬ (A1, "_", "")))))), A1,1) -2)  

    Улучшите этот ответ
    отредактировал 01 июля ’16 в 12:50
    mathielo
    6,32577 золотых знаков4545 серебряных знаков6161 бронзовый знак
    ответил 01 июля ’16 в 12:33
    добавить комментарий |

      = LEFT (A1, FIND (IF (ISERROR  (НАЙТИ ("_", A1)), A1, ВПРАВО (A1, LEN (A1) -НАЙТИ ("~", ПОДСТАВИТЬ (A1, "_", "~", LEN (A1) -LEN (ПОДСТАВИТЬ (A1)  , "_", "")))))), A1,1) -2)  

    1

    Скопировать в столбец, выбрать этот столбец и НАЧАЛО> Редактирование> Найти и выбрать, заменить:

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

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

    Улучшите этот ответ
    ответил 08 июня ’17 в 3:47
    • Обратите внимание, что * является (жадным) подстановочным знаком в поиске в Excel, поэтому он сопоставляет все, вплоть до последнего пробела, и ничего не заменяет — Superfly Jon 8 августа ’19 в 9:55
    добавить комментарий |

    Скопируйте в столбец, выберите этот столбец и НАЧАЛО> Редактирование> Найти и выбрать, заменить:

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

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


    0

    Я перевел на PT-BR, поскольку мне это тоже было нужно.

    (Обратите внимание, что я изменил пробел на , потому что мне нужно было имя файла только для строк пути.)

      = SE (ÉERRO (PROCURAR ("", A1)), A1, DIREITA (A1, NÚM.CARACT (A1) -PROCURAR ("|", ПОДСТАВИТЕЛЬ (A1,  "", "|", NÚM.CARACT (A1) -NÚM.CARACT (ПОДСТАВИТЕЛЬ (A1, "", ""))))))  

    Улучшить этот ответ
    отредактировано 12 мая 2012 в 9:20
    Cody Gray ♦
    219k4141 золотых знаков455455 серебряных знаков534534 бронзовых знака
    ответил 21 августа 2009 в 18:29
    • 3
      Я не умею читать Excel по-португальски, поэтому поверьте вам на слово 🙂 — e.James 21 авг., 09:06
    добавить комментарий |

    Я перевел на PT-BR, так как мне это тоже нужно.

    (Обратите внимание, что я изменил пробел на , потому что мне нужно было имя файла только для строк пути.)

       = SE (ÉERRO (PROCURAR ("", A1)), A1, DIREITA (A1, NÚM.CARACT (A1) -PROCURAR ("|", ПОДСТАВИТЕЛЬ (A1, "", "|"  , NÚM.CARACT (A1) -NÚM.CARACT (ПОДСТАВИТЕЛЬ (A1, "", "")))))  

    0

    Другой способ добиться этого:

      = IF (  ISERROR (TRIM (MID (TRIM (D14), SEARCH ("|", SUBSTITUTE (TRIM (D14), "", "|", LEN (TRIM (D14))) - LEN (ПОДСТАВИТЬ (TRIM (D14), ""  , "")))), LEN (TRIM (D14))))), TRIM (D14), TRIM (MID (TRIM (D14)), SEARCH ("|", SUBSTITUTE (TRIM (D14), "", "  | ", LEN (TRIM (D14)) - LEN (SUBSTITUTE (TRIM (D14)," "," ")))), LEN (TRIM (D14)))))  

    Улучшите этот ответ
    ответил 13 июля ’16 в 9:35
    добавить комментарий |

    Другой способ добиться этого:

      = IF (ISERROR (TRIM  (MID (ОБРЕЗАТЬ (D14), ПОИСК ("|", ПОДСТАВИТЬ (ОБРЕЗАТЬ (D14), "", "|", LEN (ОБРЕЗАТЬ (D14)) - LEN (ПОДСТАВИТЬ (ОБРЕЗАТЬ (D14), "", ""  )))), LEN (TRIM (D14))))), TRIM (D14), TRIM (MID (TRIM (D14), SEARCH ("|", SUBSTITUTE (TRIM (D14), "", "|",  LEN (TRIM (D14)) - LEN (ПОДСТАВИТЬ (D14), "", "")))), LEN (TRIM (D14)))))  


    -1

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

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

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

    Im докажите этот ответ
    отредактировал 18 октября 2012 в 17:39
    Alfabravo
    7,19266 золотых знаков4343 серебряных знака7676 бронзовых знаков
    ответил 18 окт. 2012 в 17:38
    • 12
      Конечно. Но как вы перевернете строку в Excel? — Джеймс, 18 октября 2012 г., 23:42
    добавить комментарий |

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

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

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



    Найти позицию последнего появления символа в строке в Excel

    Вот не-VBA с использованием LET
    = LET (
    Rmv_F_Slash, SUBSTITUTE ($ B10, ””, ””),
    Num_F_Slash, LEN ($ B10) -LEN (Rmv_F_Slash),
    Rplc_Last, SUBSTITUTE ($ B10, ””, ”@”, Num_F_Slash),
    Psntn_Last, FIND («@», Rplc_Last),
    Num_Chr_Aftr, LEN ($ B10) -Psntn_Last,
    Full_Formula, RIGHT ($ B10, Num_Chr_Aftr),
    Результат, Полная_Формула,
    Результат)


    спасибо


    Если вы ищете более одного символа, например «5.)», вместо «/» в приведенном выше примере уравнения обязательно разделите вычитание длины на количество символов. Это связано с тем, что для каждого экземпляра этой строки символов из строки удаляется множество символов, поэтому уравнение вычитания длины дает вам разницу, которая * длина требуемой строки символов * больше, чем количество экземпляров.
    Например,
    = RIGHT (A2, LEN (A2) -FIND («@», SUBSTITUTE (A2, »/», «@», LEN (A2) -LEN (SUBSTITUTE (A2, » /”,” ”))), 1)) [исходный]

    = RIGHT (A2, LEN (A2) -FIND (“ @ ”, SUBSTITUTE (A2,” 5.) ”, ”@”, (LEN (A2) -LEN (SUBSTITUTE (A2, ”5.)”, ””)))/3), 1)) [новое]


    Отлично! Огромное спасибо!! Сэкономил мне много времени 🙂


    спасибо


    Спасибо — использовал формулу ячейки, и это сработало !


    Или для Excel:

    InStrRev (rCell, rChar) + 1


    Невозможно ли заменить функцию LastPosition () на…

    InStrRev (MyString, «/») + 1

    ?


    Я так благодарен. Я очень хотел получить формулу. Это сэкономит мне сотню часов.


    Отлично работает! Спасибо!


    Ребята, вы сэкономили мне кучу времени — спасибо!


    Нужна помощь по формуле, чтобы отменить описанный выше процесс в обратном порядке,

    Пример:
    Ввод: ABC123BCDSample. txt

    Ожидаемый результат: ABC123BCD


    Используя приведенный выше пример, я использовал = MID (A2, 1, FIND («@», SUBSTITUTE ( A2, ”/”, ”@”, LEN (A2) -LEN (SUBSTITUTE (A2, ”/”, ””))), 1) -1)
    Вы можете удалить “-1”, если вы хотите включить последний/в вывод


    Это удалит все, что находится после последнего/в A1. Поместите это в B1:
    = SUBSTITUTE (A1, TRIM (LEFT (RIGHT (SUBSTITUTE (A1, ”/”, REPT (”“, 100)), 100), 100)), ””)


    Обожаю! Работает быстро и легко!


    Отличное объяснение. Отлично, спасибо.


    Спасибо за эту формулу, сегодня она сэкономила мне столько времени!


    Отлично — спасибо!


    спасибо, отлично работает


    извините, не работает


    Это сработает, болван, если вы правильно измените адреса ячеек


    Большое спасибо за это — очень полезно!


    Сработало отлично! Спасибо!


    Формула Excel умна. Но решение VBA можно упростить, используя функцию InStrRev.


    Работает довольно хорошо, но не работает, если в строке есть только один из разделительных символов («/»).

    Оцените статью
    logicle.ru
    Добавить комментарий