Excel: объединить несколько строк, но сохранить данные столбца?

1836
AYoung

У меня есть таблица Excel (Excel 2011 для Mac) с 1175 строками, содержащими названия видов (всего 431 наименование) и 72 столбцами (A: BT) месяцев с октября 2011 г. по август 2017 г. В каждой строке есть только одна ячейка информации (кроме название вида), но некоторые виды имеют несколько рядов, и число рядов для одного вида варьируется.

Screenshot of a partial view of the table

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

Снимок экрана, на котором я хотел бы, чтобы таблица выглядела, основываясь на частичном представлении на первом скриншоте

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

Любая помощь очень ценится! Я надеюсь, что мне не нужно проходить и делать все это вручную.

0
В [этот ответ] (https://superuser.com/questions/395126/how-to-combine-values-from-multiple-rows-into-a-single-row-in-excel?rq=1) есть решение с VBA. Вы можете упростить его и изменить в соответствии со своими потребностями, а также легко найти решение своей проблемы. IQV 7 лет назад 0
Я уже рассматривал это решение ранее, но, насколько я могу судить, оно довольно специфично: иметь только 2 строки с 2 столбцами данных, которые необходимо объединить в 1 строку. Имея 72 столбца данных и различное количество строк для объединения, я не уверен, как изменить это решение, чтобы оно работало для моей таблицы. Какие-нибудь мысли? Спасибо! AYoung 7 лет назад 0
Вы должны расширить логику с 2 * 2 до n * 72: внешний цикл проходит через столбец А. Он запоминает вид и номер (первого) ряда этого вида. Пока следующий ряд - тот же самый вид, внутренний цикл идет вдоль ряда и копирует (или перемещает) запись в первый ряд этого вида. IQV 7 лет назад 0
Значит, для начала мне понадобится совершенно пустой ряд с названием этого вида? Потому что в первой строке для каждого вида первый столбец с данными отличается - не то, чтобы все они имели данные в столбце 2, тогда в следующей строке есть данные в столбце 3 и т. Д. Если я не хочу, чтобы цикл копировался пустая ячейка данных над ячейкой над ней, в которой есть данные, похоже, что для моих данных цикл должен начинаться с полностью пустой строки (за исключением названия вида в столбце 1). Или я просто не понимаю VBA решение в другом посте? AYoung 7 лет назад 0
Вы можете сделать это, но это не обязательно. Вы можете сохранить первый ряд каждого вида и добавить только одну ячейку из следующих рядов в диапазоне «B: BT», которые имеют запись. Образно говоря, вы перемещаете все клетки с содержимым в первом ряду этого вида. IQV 7 лет назад 0

1 ответ на вопрос

0
Harshad Amichand Vegda

Логика для написания VBA-кода есть, но она становится слишком сложной для меня. Поэтому я смиренно предлагаю ручной метод, который использует Concatenate функцию Excel:

  1. В ячейке B2 введите Формула: = Конкатенация (B3, B4, B5, B6, B7, B8) (Если вы не хотите подробно писать Формулу; вы можете удерживать нажатой клавишу управления и выбирать ячейки для объединения)

  2. Скопируйте формулу B2 и вставьте ее в диапазон (C2 .... Bt2)

  3. Вы получите желаемый результат в строке 2.
  4. Теперь выберите строку 2, скопируйте ее и вставьте специальное то же самое в строку 2, что и значения.
  5. Удалите все строки от 3 до 8 строки.
  6. Повторите тот же процесс Шаг 1 - Шаг 5 Один за другим.

В случае каких-либо сомнений, вы можете вернуться обратно.

С уважением.

Похожие вопросы