Переехать ";"разделенные значения на следующую строку с формулой Excel - PullRequest
0 голосов
/ 10 октября 2019

Есть идеи, как отображать значения из ячейки A1:

English; German; French; Spanish; Finnish; Russian

таким образом, используя формулу Excel?

  A2  English 
  A3  German 
  A4  French 
  A5  Spanish 
  A6  Finnish 
  A7  Russian

Ответы [ 4 ]

4 голосов
/ 10 октября 2019

Начиная с Excel 2013 года, вы можете использовать FILTERXML. Вы можете поместить эту формулу в A2:

=INDEX(FILTERXML("<t><s>"&SUBSTITUTE($A$1,"; ","</s><s>")&"</s></t>","//s"),ROW(A1))

Перетащите вниз ...

enter image description here

Однако другой ответменьше печатать =)

3 голосов
/ 10 октября 2019

Поместите это в A2 и скопируйте:

=TRIM(MID(SUBSTITUTE($A$1,";",REPT(" ",999)),(ROW(1:1)-1)*999+1,999))

ROW(1:1) - просто счетчик и всегда должен быть 1:1 для первой ячейки независимо от того, где находится формула или ячейка ссылки. Он переместится на 2:2, а затем на 3:3, так как сам будет скопирован. Именно так формула знает, что возвращать.

enter image description here


После того, как формулы динамического массива были выпущены (в настоящее время доступны только для инсайдеров Office)мы можем использовать SEQUENCE вместо ROW, и нам нужно только поместить формулу в первую ячейку без необходимости копировать вниз, а Excel заполнит остальные:

=TRIM(MID(SUBSTITUTE(A1,";",REPT(" ",999)),SEQUENCE(LEN(A1)-LEN(SUBSTITUTE(A1,";",""))+1,,0)*999+1,999))

enter image description here


Чтобы сократить формулу, мы можем использовать простой 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,";")) 

Только в первой ячейке.

1 голос
/ 11 октября 2019

К вашему сведению, если вы используете Excel 2010 Professional Plus или более позднюю версию Excel, вы можете использовать Power Query для решения этой проблемы (однако, если вы имеете дело только с одной ячейкой или небольшим количествомданные, этот подход может быть избыточным).

Во-первых, загрузить данные в редактор запросов мощности;

Во-вторых, выделите соответствующий столбец, используйте функцию Разделить столбцы на вкладке Transform, чтобы разделить значения на точку с запятой ;, а в расширенной настройке выберите поместить результаты в Rows . Тогда у вас должен быть нужный список.

Наконец закройте и загрузите вывод на новый лист (по умолчанию).

Дайте мне знать, если у вас есть какие-либо вопросы. Приветствия:)

0 голосов
/ 10 октября 2019

Предположим, введите A1:

English; German; French; Spanish; Finnish; Russian

Затем скопируйте A1 и вставьте A2

Выберите A2 >> Ctrl + H >> Найти что: введите: "; "(без кавычек) >> Заменить на: (оставьте пустым) >> Нажмите" Заменить все ">> Закрыть

А2:

English German French Spanish Finnish Russian

Уменьшить ширину столбца до ширины: 8.00 (61 пиксель)

Выберите A2 >> Editing >> Fill, выберите Justify >> OK >> Завершить

Окончательный выбор:

A2 English    
A3 German    
A4 French    
A5 Spanish    
A6 Finnish    
A7 Russian
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...