-1

Я использую SharePoint для сбора данных с помощью функции опроса. Тем не менее, я хочу сделать выходные данные более управляемыми. Поэтому я хочу взять несколько столбцов и объединить их в несколько.

В настоящее время это выглядит так:

Name 1  Address 1  Age 1 Name 2 Address 2 Age 2 Name 3 Address 3 Age 3 Date

John    My Home   50 Mary Your Home 40 James Our Home 70 01/31/1991 

Я хочу, чтобы это выглядело так:

**Name Address Age Date** 

John My Home 50  01/31/1991 

Mary Your Home 40 01/31/1991

James Our Home 70 01/31/1991

Опрос постоянно обновляется, поэтому в идеале лучше использовать макрос /vba, который извлекает данные из одного листа и производит их таким образом.

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

И последнее, но не менее важное: в ячейках есть другие данные, с другими шагами, которые я, вероятно, добавлю к макросу, но это большая часть шагов, которые я не смог понять.

Заранее спасибо за помощь !

Аналогичный запрос (кажется): Excel 2010 Перемещение данных из нескольких столбцов / строк в одну строку

1 ответ1

0

Есть простой способ сделать это без VBA, просто используя ссылки на ячейки. Похоже, что ваш "исходный" пример использует столбцы A:J, и я предполагаю, что есть заголовки столбцов, поэтому данные начинаются со строки 2. Я предполагаю, что у вашего выходного листа также есть заголовки столбцов, а результаты начинаются со строки 2, и я буду использовать столбцы A:D. Приведенные ниже формулы основаны на этом макете, поэтому вам может потребоваться настроить другой макет или просто поместить данные в эти места. Итак, вот исходные данные:

Источник

Результат выглядит так:

Результат

Все это использует «1 1/2» формулу. Поскольку ссылка на дату указана из одного места для трех строк, это слегка измененная версия основной формулы. Основная формула:

=INDIRECT("sheet1!r"&CEILING((ROW()-1)/3,1, )+1&"c"&COLUMN()+MOD((ROW()+1)/3,1)*9,0)

Вы можете ввести его в A2 и скопировать в столбцы B и C, а затем скопировать его, чтобы предварительно заполнить столько строк, сколько вам нужно. Когда вам нужно больше, просто заполните произвольное количество дополнительных строк.

Он использует функцию INDIRECT для создания ссылок на ячейки из рассчитанных значений. Я использую адреса в стиле R1C1, потому что они поддаются таким вычислениям. При вычислении строки создается ссылка на одну и ту же исходную строку для трех выходных строк. Вычисление столбца перемещается по трем исходным столбцам для каждой последующей строки результатов.

Столбец даты только фиксирует ссылку на столбец 10 источника:

=INDIRECT("sheet1!r"&CEILING((ROW()-1)/3,1, )+1&"c10",0)

Это приводит к выводу 0 для пустых исходных ячеек. Самый простой способ скрыть это настроить просмотр страницы, чтобы не отображать нулевые значения. Я сделал это здесь. Формула предварительно заполняется в строках за Берт. Это также скроет отдельные пустые ячейки.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .