У меня есть эта строка в ячейке A1:
A1 some text, to be, processed
Я хочу создать формулы для B1, C1, D1 и т.д., Где:
B1 some text
C1 to be
D1 processed
E1
Я уже нашел функцию Text to Columns , но мне нужно сделать это с помощью формул.
У меня есть эта строка в ячейке A1:
A1 some text, to be, processed
Я хочу создать формулы для B1, C1, D1 и т.д., Где:
B1 some text
C1 to be
D1 processed
E1
Я уже нашел функцию Text to Columns , но мне нужно сделать это с помощью формул.
Вы можете использовать VBA для создания пользовательской функции, которую можно использовать в качестве формулы. Сделать это:
Public Function custom_split(str As String, num As Long, Optional delimeter As String = " ") As String
Dim substrs() As String
substrs = split(str, delimeter)
If UBound(substrs) < num Then
custom_split = ""
Else
custom_split = Trim(substrs(num))
End If
End Function
Теперь закройте окно Visual Basic, чтобы вернуться в Excel.
Чтобы использовать формулу, как в вашем примере, введите
Вы можете изменить запятую, чтобы разделить на другие символы.
Единственным недостатком пользовательских формул является то, что вы получите предупреждение о включении макросов при каждом открытии файла.
Я сделал это, используя Left()
и некоторые столбцы на запасном листе, в котором считались символы, пока не нашли запятую. Это выглядело примерно так:
A B C D
1 Text 1st Comma 2nd Comma 3rd comma
2 =(cell ref to text)&"," =find(",",a2,0) =find(",",a2,b2) =find(",",a2,c2)
Referring to your original sheet:
B1: =Left(a1,NewSheet!B2)
C1: =Mid(A1, NewSheet!B2+1, NewSheet!C2-NewSheetB2)
D1: =Mid(A1, NewSheet!(C2+1 NewSheet!d2-Newsheet!c2)
В вашем NewSheet сделайте столько столбцов, сколько, по вашему мнению, могут содержать запятые в вашем тексте. Если число большое, вы, вероятно, должны использовать решение VBA.
Обратите внимание, что я вставил запятую в конец вашей строки, чтобы вы не получали ошибок (#value, если в строке нет запятой). Вы можете либо проверить результат, превышающий длину исходной строки, либо использовать =iferror()
для обработки функций =find()
не находящих запятую. Наконец, используйте =Trim()
если строки не соответствуют пробелу после запятой.
Вы можете использовать текстовые функции Left, Mid и Right. Слева позволяет вам извлечь количество символов из левой части текстовой строки. Право делает то же самое с правой стороны текстовой строки. С Mid вы исключаете некоторое количество символов слева, а затем говорите ему взять следующее x количество символов.
Если вы перейдете в диалоговое окно "Вставить функцию" (нажмите "fx" рядом с панелью формул), вы найдете эти функции в категории "Текст".