Поместите это в A2 и скопируйте:
=TRIM(MID(SUBSTITUTE($A$1,";",REPT(" ",999)),(ROW(1:1)-1)*999+1,999))
ROW(1:1)
- просто счетчик и всегда должен быть 1:1
для первой ячейки независимо от того, где находится формула или ячейка ссылки. Он переместится на 2:2
, а затем на 3:3
, так как сам будет скопирован. Именно так формула знает, что возвращать.
После того, как формулы динамического массива были выпущены (в настоящее время доступны только для инсайдеров Office)мы можем использовать SEQUENCE вместо ROW, и нам нужно только поместить формулу в первую ячейку без необходимости копировать вниз, а Excel заполнит остальные:
=TRIM(MID(SUBSTITUTE(A1,";",REPT(" ",999)),SEQUENCE(LEN(A1)-LEN(SUBSTITUTE(A1,";",""))+1,,0)*999+1,999))
Чтобы сократить формулу, мы можем использовать простой UDF, чтобы вернуть массив значений, используя Split()
:
Function MYSPLIT(STR As String, del As String) As String()
MYSPLIT = SPLIT(STR, del)
End Function
Тогда это простая формула INDEX:
=INDEX(MYSPLIT($A$1,";"),ROW(1:1))
И скопировать вниз.
Или когда освобождаются динамические массивы:
=TRASPOSE(MYSPLIT($A$1,";"))
Только в первой ячейке.