Как разбить строку на основе «:» в MS-Excel?

58

Моя колонка Excel заполнена такими словами:

1.) ABC:DCF
2.) DCF:FED

Я хочу разделить каждое слово на основе «:» и поместить результат в соседние столбцы так, чтобы «ABC: DCF» в ячейке «A: 1» стал «ABC» в ячейке «B: 1» и «DCF» в ячейке » C: 1 ", а также соответствующие значения в каждом столбце. Как это сделать?

Andrea
источник

Ответы:

63

Перейдите на вкладку «Данные», затем выберите «Текст в столбцы». Позже, выберите опцию «Разграничить», затем выберите «другое» и поместите любой разделитель, который вы хотите.

BROSS
источник
80

Текст в столбцы будет работать. Другой вариант, если вы хотите сохранить исходное значение, это использовать формулы:
в B1

=left(a1,find(":",a1)-1) 

в С1

=mid(a1,find(":",a1)+1,len(a1))
нутч
источник
2
Исходное значение можно сохранить даже с другим решением (вы можете указать другой столбец для хранения новых значений), но мне больше нравится это решение, потому что оно позволяет всегда иметь актуальные значения (т. Е. Если вы измените A1, B1 и C1 будут обновлены, а опция преобразования текста в столбец - нет).
psychowood
Это блестящее решение
JSG
26

Если вы можете использовать VBA, то вы можете использовать эту Split()функцию. Вот пользовательская функция (UDF), которую вы можете использовать в ячейке. Он разделяется по вашему выбору символа и возвращает n- й элемент списка разделения.

См. Как добавить VBA в MS Office? для получения информации о том, как определить UDF.

Function STR_SPLIT(str, sep, n) As String
    Dim V() As String
    V = Split(str, sep)
    STR_SPLIT = V(n - 1)
End Function

Так что вам нужно ввести:

=STR_SPLIT(A1, ":", 1) // for the first half
=STR_SPLIT(A1, ":", 2) // for the second half
Джейми Булл
источник
1
Очень хорошо, не знал, что было так легко создавать свои собственные формулы
капоты
1
Это идеально подходит для разделения URL на его составные части.
Underverse
7

Вставьте его в B1 и заполните его столбцами справа и рядами вниз:

=TRIM(MID(SUBSTITUTE($A1,":",REPT(" ",999)),COLUMNS($A:A)*999-998,999))

Изменить: Ранее я опубликовал локализованную версию формулы, где «,» был заменен на «;». Это не работает в американской версии Excel:

=TRIM(MID(SUBSTITUTE($A1;":";REPT(" ";999));COLUMNS($A:A)*999-998;999))

Харди Уутма
источник
1
Добро пожаловать в Супер пользователя. Не могли бы вы добавить несколько предложений к вашему ответу, чтобы объяснить, что это делает и как это работает? Это повысит его образовательную ценность. Благодарю.
fixer1234
Да конечно. Он делает то же самое, что и вкладка «Текст в столбцы» на вкладке «Данные», только с формулой. Вы можете заменить «:» другим разделителем или ссылаться на разделитель из другой ячейки.
Харди Уутма
Excel говорит, что это неверная формула, когда вы вставляете ее в ячейку. Пожалуйста, проверьте и обновите.
thilina R
Привет thilina R! Спасибо за уведомление. Я сделал корректировку для американской версии Excel. Пожалуйста, дайте мне знать, если у вас есть какие-либо проблемы с этим сейчас или если что-то неясно.
Харди Уутма
Очень хорошо. Пока единственный ответ, который позволяет вам иметь дело с таким количеством разделителей, сколько вы захотите, без создания собственной функции.
Уилсон