Вы пометили свой вопрос с помощью VBA, но в своем вопросе вы ссылаетесь на функции формул, поэтому мне неясно, ищете ли вы функцию или VBA. С учетом сказанного я собираюсь рассказать о том, как вы отметили свой вопрос.
Чтобы разделить строку с помощью VBA, вы можете использовать функцию Split () .
Пример:
Dim wordArray() As String
Dim inputString As String
inputString = "ATT TAG: HELLO, ATT TAG: WORLD, ATT TAG: ZOMBIES"
wordArray() = Split(inputString, "ATT TAG:")
Оттуда, используйте массив для создания и заполнения новых столбцов, как вы считаете нужным.
UPDATE:
Предположим, у вас есть некоторые данные, которые выглядят следующим образом; где все застряло в одной ячейке и разделено новыми строками:
|-----------------|---|---|---|---|
| ATT TAG: Value1 | | | | |
| ATT TAG: Value2 | | | | |
| ATT TAG: Value3 | | | | |
|-----------------|---|---|---|---|
|-----------------|---|---|---|---|
|-----------------|---|---|---|---|
Вы можете перебрать массив, а затем вставить результат в новый столбец:
Sub splitTest()
' declare variables
Dim wordArray() As String
Dim inputString As String
Dim pasteValue As String
Dim lastColumn As Long
' get the input from cell A1
inputString = Range("A1")
' split the input into an array
' using "ATT TAG:" as the delimiter
wordArray() = Split(inputString, "ATT TAG:")
' loop through the array
For Each element In wordArray
' find the last used column from row 1
lastColumn = Cells(1, Columns.Count).End(xlToLeft).Column
' clean up the value to be pasted; remove whitespace
' and any newlines -- represented by "Chr(10)"
pasteValue = Replace(Trim(element), Chr(10), "")
' set the last used column to the element value
Cells(1, lastColumn + 1).Value = pasteValue
Next element
End Sub
Который будет производить:
|-----------------|--------|--------|--------|
| ATT TAG: Value1 | | | |
| ATT TAG: Value2 | Value1 | Value2 | Value3 |
| ATT TAG: Value3 | | | |
|-----------------|--------|--------|--------|
|-----------------|--------|--------|--------|
|-----------------|--------|--------|--------|