Проверка Вхождения Строки в Строку Excel • Функция заменить

Excel: последнее совпадение символа и строки в строке

Существует ли эффективный способ определить последнее совпадение символа / строки в строке с помощью базовых функций? I.e. не последний символ / строка строки, а позиция последнего вхождения character/string’s в строке. Search и find оба работают left-to-right, поэтому я не могу придумать, как применить их без длинного рекурсивного алгоритма. И это решение сейчас кажется устаревшим.

12 ответов

Я должен заменить последнее совпадение строки (например, слово foo) в документе HTML. Проблема в том, что структура документа HTML всегда случайна. Я пытаюсь сделать это с помощью preg_replace, но пока я знаю, как заменить только первый матч, но не последний. Спасибо.

Думаю, я понимаю, что ты имеешь в виду. Допустим, например, вам нужен самый правый \ в следующей строке (которая хранится в ячейке A1):

Чтобы получить позицию последнего \, вы должны использовать эту формулу:

Это говорит нам, что самое правое \ находится в символе 24. Он делает это, ища «@» и заменяя самую последнюю «\» на «@». Он определяет последний с помощью

В этом случае подстрока просто»\», которая имеет длину 1, поэтому вы можете оставить деление в конце и просто использовать:

Теперь мы можем использовать это, чтобы получить путь к папке:

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

Как насчет создания пользовательской функции и использования ее в формуле? VBA имеет встроенную функцию InStrRev , которая делает именно то , что вы ищете.

И ваша функция будет выглядеть следующим образом (при условии, что исходная строка находится в B1):

тигераватар и Жан-Франсуа Корбетт предложили использовать эту формулу для генерации строки справа от последнего вхождения символа «\»

Если символ, используемый в качестве разделителя, — пробел,»», то формулу необходимо изменить на:

С новыми версиями excel появляются новые функции и, следовательно, новые методы. Хотя он воспроизводится в более старых версиях (но я не видел его раньше), когда у вас есть Excel O365, вы можете использовать его:

Это также может быть использовано для извлечения последней позиции (перекрывающихся) подстрок:

Хотя это и позволяет нам больше не использовать произвольный символ замены, и это позволяет перекрывать паттерны, «downside»-это использование массива.

Примечание: Вы можете заставить то же самое поведение в более старых версиях Excel через любой из них

Вводится через Ctrl Shift Enter или с помощью встроенного INDEX , чтобы избавиться от неявного пересечения:

Я пытаюсь заменить последнее слово строки, если оно имеет длину 2 символа, используя regex. Я использовал [a-zA-Z]$ , но он находит последние 2 символа строки. Я не хочу заменять последнее слово, если оно не содержит ровно 2 символа, как я могу это сделать?

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

Конечно, принятый Excel formula работает, но его слишком сложно читать и использовать. В какой-то момент вам придется разбиться на более мелкие куски, чтобы его можно было обслуживать. Моя функция ниже читаема, но это не имеет значения, потому что вы вызываете ее в формуле, используя именованные параметры. Это упрощает его использование.

Find what

Это возвращает то, что остается (здесь Filename.ext ) после последнего экземпляра любого выбранного символа (здесь \ ), который иногда является целью в любом случае, и облегчает поиск позиции последнего такого символа с помощью короткой формулы, такой как:

Я немного опоздал на вечеринку, но, может быть, это поможет. Ссылка в вопросе имела аналогичную формулу, но моя использует оператор IF(), чтобы избавиться от ошибок.

Если вы не боитесь Ctrl+Shift+Enter, вы можете довольно хорошо работать с формулой массива.

возвращает массив строк длиной 1, найденных в целевой строке, а затем возвращает пустые строки после достижения длины целевой строки:

сравнивает каждый элемент массива со строкой «.» и возвращает либо индекс символа в строке, либо FALSE:

Преимущества этой формулы в том, что она коротка, относительно проста для понимания и не требует каких — либо уникальных символов.

Недостатками являются обязательное использование Ctrl+Shift+Enter и ограничение длины строки. Это можно обойти с помощью варианта, показанного ниже, но этот вариант использует функцию OFFSET(), которая является изменчивой (читай: медленной) функцией.

Не уверен, какова скорость этой формулы по сравнению с другими.

В более новых версиях Excel (2013 и выше) flash заполнение может быть простым и быстрым решением см.: Использование Flash Заполнение Excel .

Очень поздно на вечеринку, но простое решение-использовать VBA для создания пользовательской функции.

Добавьте функцию в VBA в модуле WorkBook, Рабочий лист или VBA

в ячейке и строка, подлежащая поиску в ячейке B1, заполнит ячейку текстом trail, содержащим последний «/» из ячейки B1. Никаких ограничений по длине, никаких непонятных формул. Единственным недостатком, который я могу себе представить, является необходимость в рабочей книге с поддержкой макросов.

Любая пользовательская функция VBA может быть вызвана таким образом, чтобы вернуть значение в формулу ячейки, в том числе в качестве параметра встроенной функции Excel.

Если вы собираетесь активно использовать функцию, вам нужно будет проверить случай, когда символа нет в строке, тогда строка пуста и т. Д.

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

Похожие вопросы:

Я играю с Ruby, чтобы сделать для меня некоторые версии файлов. У меня есть строка 2.0.0.65 . Я разделяю его, увеличиваю номер сборки (65 —> 66), а затем хочу заменить 65 на 66. Однако в этой.

Я хочу найти первое и последнее вхождение определенного символа внутри строки. В качестве примера рассмотрим строку с именем 2010-####-3434, и предположим, что искомый символ -#. Первое вхождение.

Я хочу найти индекс последнего вхождения символа в строку. Например, если моя строка google.com/program/test и я хочу найти букву / , я хочу, чтобы моя функция возвращала 18 , потому что это.

Я должен заменить последнее совпадение строки (например, слово foo) в документе HTML. Проблема в том, что структура документа HTML всегда случайна. Я пытаюсь сделать это с помощью preg_replace, но.

Кто-нибудь знает очень быстрый способ заменить последнее вхождение строки другой строкой в строке? Обратите внимание, что последнее вхождение строки может не быть последними символами в строке.

Я пытаюсь заменить последнее слово строки, если оно имеет длину 2 символа, используя regex. Я использовал [a-zA-Z]$ , но он находит последние 2 символа строки. Я не хочу заменять последнее слово.

Как я могу получить все совпадения в строке? Например, строка-это hhh (12) 5cb (jkl) jj или brt (11) < Я хочу получить 12 и jkl в первой строке и 11 во второй. Я пытался preg_match(/.*\((.*)\).*/.

В следующем вопросе обсуждается, как найти последнее совпадение в столбце: найдите последнее совпадение в столбце, используя встроенные функции в excel vba Мне нужен способ найти последний экземпляр.

В следующем вопросе обсуждается, как найти последнее совпадение в столбце найдите последнее совпадение в столбце, используя встроенные функции в excel Мне нужен способ найти последнее непустое.

[expert_bq id=»1570″]Если функция ЗАМЕНИТЬ меняет текст, указанный посимвольно вручную, то функция ПОДСТАВИТЬ автоматически находит вхождения указанной строки и меняет их. Если же вы хотите что-то уточнить, обращайтесь ко мне![/expert_bq] Пример 2. В столбце таблицы хранятся текстовые записи с наименованием и маркой товаров. Разделить имеющиеся строки на подстроки с наименованием и маркой соответственно и записать полученные значения в соответствующие столбцы таблицы.
Проверка Вхождения Строки в Строку Excel • Функция заменить

Работа со строками: от простого к сложному

Существует ли эффективный способ определить последнее совпадение символа / строки в строке с помощью базовых функций? I.e. не последний символ / строка строки, а позиция последнего вхождения character/string’s в строке. Search и find оба работают left-to-right, поэтому я не могу придумать, как применить их без длинного рекурсивного алгоритма. И это решение сейчас кажется устаревшим.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: