Предположим, что в ячейке А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доступны для редактирования.

