Конкатенация на основе заголовка столбца - PullRequest
0 голосов
/ 10 июля 2019

У меня есть экспорт данных CSV из внешней системы, где несколько полей могут содержать несколько релевантных значений. В пользовательском интерфейсе данные для этих полей отображаются через запятую в одном столбце.

Мне периодически нужно будет экспортировать эти данные для обновления данных в Excel 2016.

При экспорте CSV каждое дополнительное значение в этих полях создает другой столбец с тем же заголовком поля (например, Sprints | Sprints | Sprints), причем каждый столбец имеет одно из значений из поля (например, S1 | S2 | S3). Чем больше значений, тем больше повторяется заголовок столбца.

Неделя 1: данные могут выглядеть следующим образом, а справа вывод, который я хотел бы: enter image description here

В следующий раз, когда я сделаю экспорт, столбцы могут измениться, и данные могут выглядеть следующим образом. Импортированные данные могут даже включать больше столбцов данных. Опять же, по предпочтительному выводу справа. enter image description here

Я немного погуглил, но все решения по объединению, которые я вижу, относятся к объединению данных, основанных на значениях в столбцах, а не на заголовках столбцов.

MAX (B1: D1) и MAXA (B1: D1) игнорировали текстовые значения и возвращали 0 для диапазона. Также необходимо, чтобы диапазон устанавливался вручную каждый раз, когда количество столбцов в данных CSV изменялось

Мне нужны все несколько значений для каждого поля с одинаковым заголовком / именем столбца в одной ячейке / столбце Excel (например, S1 S2 S3), но я не могу контролировать количество столбцов с одинаковым заголовком / именем столбца в любом заданном экспорт.

В качестве альтернативы я мог бы преуспеть только с самыми левыми и самыми правыми значениями столбцов (например, S1 и / или S3).

В идеале это должно происходить без какого-либо дополнительного ручного вмешательства для изменения диапазона после каждого нового импорта данных CSV в Excel.

1 Ответ

0 голосов
/ 23 июля 2019

У меня нет лучшего решения, но пока это должно помочь.

Предположим, что ваши входные данные находятся на листе 1 следующим образом: enter image description here

Затем в Sheet2,
1. В ячейку A1 вручную добавьте заголовок, аналогичный A1 в Sheet1, или используйте формулу =Sheet1!A1
2. Для заголовков столбцов используйте эту формулу в ячейке B1, расширяйте ее в той же строке, пока не получитенули:

=INDEX(Sheet1!1:1,1,LOOKUP(2,1/(Sheet1!$1:$1=A$1),COLUMN(Sheet1!$1:$1))+1)
Для значений строки скопируйте эту формулу в ячейку A2, растяните ее в обоих направлениях:
=TEXTJOIN(",",TRUE,INDIRECT(CONCATENATE("Sheet1!",ADDRESS(ROW(),MATCH(A$1, Sheet1!$1:$1,0)))):INDIRECT(CONCATENATE("Sheet1!",ADDRESS(ROW(),LOOKUP(2,1/(Sheet1!$1:$1=A$1),COLUMN(Sheet1!$1:$1))))))

Это должно привести к выводу, как это ожидается:
enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...