Разбить ячейки, а вернее — отменить объединение ячеек в эксель с заполнением всех образовавшихся ячеек данными из объединенной

Разбить ячейки, а вернее - отменить объединение ячеек в эксель с заполнением всех образовавшихся ячеек данными из объединеннойИногда эксель удивляет своими требованиями делать что-то через э… макросы. Вот недавно, встала задача разбить несколько объединенных ячеек по одной, чтобы можно было нормально отсортировать весь диапазон. Думаю, никому не надо объяснять, как просто убрать объединение ячеек, разбив их по одной (я имею ввиду формат-выравнивание-убрать галку с «объединение ячеек»). Но, к сожалению, эксель обладает очень интересным свойством при отмене объединения ячеек не спрашивать, как именно мы хотели бы их вернуть в нормальное, разъединенное состояние, а тупо пишет в верхнюю левую ячейку значение, которое было в объединенной, а все остальные ячейки оставляет незаполненными. Ну, естественно, ни о какой нормальной сортировке по прежде объединенным ячейкам говорить не приходится. И хорошо бы их было всего штук 200-300. А если их шестьдесят тысяч, разбитых на группы по 10 ячеек? Вручную шесть тысяч значений потом копировать в оставшиеся пустыми ячейки?

Типичная картина — хотим отсортировать список пофамильно, чтобы Кузнецов шел все-таки после Иванова. Пример, разумеется, очень упрощенный.

Исходные данные

Просто так отсортировать таблицу эксель нам не даст — ячейки-то объеденены. Но и если мы отменим объединение, то каждая фамилия запишется только в верхнюю ячейку, и остальные придется дозаполнять. Получится вот так вот:

Обычное объединение ячеек

А нам то надо, чтобы в каждой ячейке было соответствующее значение, иначе при сортировке получится черти что!

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

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

Итак, создаем макрос с кодом:

В результате выполнения макроса все выделенные объединенные ячейки разбиваются по одной, и заполняются именно тем значением, которое было в объединенной. Сортируй-не хочу.

Результат разбиения макросом

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

Ну и если, уже после того, как ячейки будут пересортированы, потребуется снова объединить ячейки с одинаковыми значениями (забудем на минуту, что объединенные ячейки — это зло, т.к. в случае, если требуется визуальная наглядность — то без них не обойтись), то нам опять придется использовать макрос. В интернете ссылок куча — но у меня заработал только один.

Тоже на всякий случай приведу код:

Все ячейки с одинаковыми значениями при его выполнении объединятся в соответствующие группы. Единственное — возможно, что форматирование толщины линий придется слегка подправить.

You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.
8 комментариев
  1. Комментарий № 1
    Виталий says:

    Спасибо Вам!!!!!!

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

    • Вариант 1 — создать какой-нибудь пустой файл, в котором создать этот макрос, сохранить. Сначала открывать этот файл, затем свой файл, с которым работаете, и выполнять там макрос, содержащийся в пустом файле (выбрав хранилище макросов — «все открытые книги».
      Вариант 2 — Поместить его в стандартный модуль Personal.xls (личная книга макросов).
      Если этой книги у Вас ещё нет, то макрорекордером запишите любой макрос (потом удалите) и сохраните его в «личной книге макросов». При этом действии она (книга) автоматически создастся.
      Туда кладете до кучи и нужный макрос. После этого — идете в меню «окно»-«скрыть», и убираете эту книгу с глаз, чтобы она их лишний раз не мозолила.

  3. Комментарий № 5
    Евгения says:

    Огромное спасибо!!!

    Такую сложную проблему благодаря вам решили за 5 мин. В базе было 16000 строк, сгруппированных по 3. Здорово!

  4. Комментарий № 6
    Татьяна says:

    Здравствуйте! Подскажите, пожалуйста, можно ли присвоить порядковый номер группе ячеек автоматически. Т.е. есть массив данных, состоящий из 1000 строк, эти строки надо разбить по 10 и пронумеровать. Первые 10 строк = 1, вторые 10=2 и т.п. Можно ли это сделать автоматически?

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *


Subscribe without commenting

QR Code Business Card