2011-11-17 13:40:49 +0000 2011-11-17 13:40:49 +0000
22
22

подстрока экстракции Excel из строки

Я ищу способ извлечь подстроку переменной длины из строки.

Мои ячейки будут выглядеть примерно так:

ABC - DEF
ABCDE - DEF
ABCD - ABC

Я хочу разделить строку по символу -, так что ячейки станут:

ABC
ABCDE
ABCD

Это должно быть сделано с помощью формулы, а не VBScript.

Я использую Excel 2010

EDIT

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

Ответы (5)

26
26
26
2011-11-17 13:51:09 +0000

Эту проблему можно разбить на два этапа:

  1. Найдите индекс в строке нужного вам сплит-символа (в данном случае "-" или " - ").
  2. Получить префиксную подстроку от начала исходного текста до индекса разделения. Команды

Каждая из команд FIND и SEARCH вернет индекс заданного needle в haystack (FIND чувствителен к регистру, SEARCH не чувствителен к регистру и позволяет использовать подстановочные символы). Учитывая это, мы сделали это:

FIND(search_text, source_cell, start_index)

или в данном случае:

FIND(" - ", A1, 1)

После того, как у нас есть индекс, нам нужен префикс source_cell, чтобы сделать “дробление”. MID делает именно это:

MID(source_cell, start_index, num_characters)

Складывая их вместе, мы имеем:

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

с A1, имеющим текст ABC - DEF дает ABC.

7
7
7
2011-11-17 15:22:44 +0000

Расширяя ответ Эндрю, основанный на вашем редактировании: чтобы найти строку символов, на которой нужно разделить, мы используем функцию FIND. Если функция FIND не находит заданную строку, она возвращает ошибку #VALUE?. Поэтому нам нужно будет проверить это значение и использовать вместо него подстановочное значение.

Для проверки любого значения ошибки, включая #VALUE, мы используем функцию ISERROR, таким образом:

=ISERROR(FIND(" - ", A1, 1))

, что будет верно, если функция FIND не сможет найти строку “ - ” в ячейке A1. Поэтому мы используем это, чтобы решить, какое значение использовать:

=IF(ISERROR(FIND(" - ", A1, 1)), A1, MID(A1, 1, FIND(" - ", A1, 1)))

Это говорит о том, что если команда find возвращает ошибку, используйте немодифицированную ячейку A1. В противном случае, выполните функцию MID, которую уже предоставил Эндрю.

2
2
2
2014-08-11 08:59:14 +0000

Спасибо @AndrewColeson за ваш ответ.

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

=MID(A1,LEN(B1)+3,LEN(A1))

А именно:

Этот код отлично подходит, если у вас есть неопределенное количество символов после -.

Например:

Если у вас есть:

A1 = ABC - DEF
B1 = =MID(A1,1,FIND(" - ",A1,1))
    B1 = ABC
Therefore A1 = DEF
1
1
1
2014-08-19 22:50:39 +0000

Вот очень простой способ извлечь 5-й символ слева из текстовой строки в Excel:

Предположим, что строка символов ABCDEFGHIJ хранится в ячейке А1 в электронной таблице Excel, затем следующая формула

=RIGHT(LEFT(A1,5),1)

производит 5-й символ слева в строке, а именно E.

0
0
0
2017-05-02 10:15:45 +0000

Следующая формула удалит подстроку из [TEXTCOLUMN_1]

, например: если вы хотите преобразовать -./thumb/hello.jpg в thumb/hello.jpg, то используйте следующую формулу

=SUBSTITUTE([TEXTCOLUMN_1],LEFT([TEXTCOLUMN_1],[NUM_OF_CHARACTERS]),)

[TEXTCOLUMN_1] = имя столбца, который вы хотите изменить[NUM_OF_CHARACTERS] = количество символов с левой стороны, которые вы хотите удалить

Если вы хотите удалить с правой стороны, то используйте следующие

=SUBSTITUTE([TEXTCOLUMN_1],RIGHT([TEXTCOLUMN_1],[NUM_OF_CHARACTERS]),)