Предположим, что в ячейке А1 Excel есть содержимое «a, b, c, d, e», есть ли способ написать формулу массива, так что в B1:B5 покажет результат разделения, т.е. B1 = a, B2 = b, B3 = c, B4 = d, B5 = e?
2 ответа
1
Без формулы (моя любимая):
Выберите «A1»> «Данные»> «Текст в столбец»> «С разделителями»: «,» в качестве ограничителя> «Готово» (выберите «Заменить на данный момент»).
Выберите результат (5 ячеек)> Ctrl+C > r-щелкните на B1, выберите транспонирование. сделанный.
С формулой:
B1 ---> =MID(A1,1,FIND(",",$A$1,1)-1)
B2 ---> =MID($A$1,FIND(",",$A$1,1)+1,FIND(",",$A$1,FIND(",",$A$1,1)+1)-FIND(",",$A$1,1)-1)
B3 ---> =MID($A$1,FIND(",",$A$1,FIND(",",$A$1,1)+1)+1,FIND(",",$A$1,FIND(",",$A$1,FIND(",",$A$1,1)+1)+1)-FIND(",",$A$1,FIND(",",$A$1,1)+1)-1)
B4 ---> =MID($A$1,FIND(",",$A$1,FIND(",",$A$1,FIND(",",$A$1,1)+1)+1)+1,FIND(",",$A$1,FIND(",",$A$1,FIND(",",$A$1,FIND(",",$A$1,1)+1)+1)+1)-FIND(",",$A$1,FIND(",",$A$1,FIND(",",$A$1,1)+1)+1)-1)
B5 ---> =MID($A$1,FIND(",",$A$1,FIND(",",$A$1,FIND(",",$A$1,FIND(",",$A$1,1)+1)+1)+1)+1,LEN(A1)-FIND(",",$A$1,FIND(",",$A$1,FIND(",",$A$1,FIND(",",$A$1,1)+1)+1)+1))
ключ: найти n-ую "," в строке .. как "маркеры" для функции mid()
.
Надеюсь, поможет.
0
Я хотел бы предложить MACRO, который является лучшим и самым быстрым методом, для разделения значений, разделенных запятыми, от Cell до Rows.
Этот MACRO берет данные в столбце A и помещает результаты в столбец B.
Sub SplitData()
Dim src As Range
Dim result As Variant
For Each src In Range("A:A").SpecialCells(xlCellTypeConstants)
result = Split(src, ",")
With Cells(Rows.Count, 2).End(xlUp)
Range(.Offset(1, 0), .Offset(1 + UBound(result, 1), 0)) = Application.WorksheetFunction.Transpose(result)
End With
Next src
End Sub
NB
- На активном листе нажмите
Alt+F11
чтобы открытьVB Editor
затемCopy & Paste
этот код как стандартный модуль и, наконец,RUN
его. Range("A:A")
для столбцаA
и(Rows.Count.2)
для столбцаB
доступны для редактирования.