Как исправить объединенные ячейки должны быть одинакового размера. Ошибка Excel 27 сентября 2021 г. 14 мая 2021 г., Alex
При попытке отсортировать данные в Excel вы могли столкнуться с ошибкой, указывающей на то, что объединенные ячейки должны быть одинакового размера. Обычно это происходит при копировании и вставке данных из источника в Excel. Иногда это заставляет Excel объединить некоторые ячейки, даже не заметив этого.
Чтобы решить эту проблему, вам просто нужно разъединить все ячейки на листе. Звучит как много работы, но на самом деле это можно сделать всего несколькими щелчками мыши Вот как это сделать.
- Нажмите кнопку «Выбрать все» слева от столбца A и выше строки 1. Вы также можете просто нажать Ctrl + A на клавиатуре (Cmd + A на Mac).
- На вкладке «Главная» щелкните маленькую стрелку справа от пункта «Объединить & Отцентрируйте и выберите «Разъединить ячейки».
- Наконец, попробуйте еще раз отсортировать данные. Вы больше не должны получать ошибку об объединенных ячейках!
Сортировка, при разном размере ячеек |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
Проблема объединённых ячеек при сортировке.
Автор SS78RUS, 11.05.2012, 01:27
« назад — далее »
Приветствую!
Появилась необходимость поработать с очередным «небольшим» реестром.
Загвоздка в нём следующая: как известно, для сортировки ячейки должны быть «одинакового размера».
В этом же архиве в столбце с 14-го по 19-й (наименование товаров — сумма) есть контракты с множеством товаров и, если отменить группировку ячеек в документе, то строки с заполненными 14-19-ми ячейками становятся пустыми в остальных полях.
Собственно вопрос — как сделать так, чтобы при отмене группировки ячеек, поля, ставшие пустыми, заполнялись данными из изначального источника, т.е получается чтобы ячейки с 14-й по 19-ю были разные, а остальные — одинаковые.
Не очень прозрачно написал, но пример реестра прикладываю — с ним будет понятней о чём я
Выделяем весь блок, разъединяем все, далее Главная — Найти и выделить — Выделение группы ячеек — Пустые ячейки — ОК. Затем жмем равно (=), стрелочку вверх и Контрл +Ентер (сразу). Потом опять выделяем весь блок, копируем и вставляем значениями.
Я для этого написал такой простенький макрос (положил его в Персонал и вывел кнопку на ПБД)
Sub Zapolnenye_Null()
n = Selection.Address
On Error GoTo A
g = 1 / (Range(n).Cells.Count - 1)'проверка, что выделено несколько ячеек
Selection.SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=R[-1]C"'все то, что написано в посте текстом
Range(n) = Range(n).Value
A: Exit Sub
End Sub
Скажи мне, кудесник, любимец ба’гов…
Яндекс-деньги: 41001632713405
Webmoney: R289877159277; Z102172301748; E177867141995
Спасибо! Как всегда всё гениальное просто
НО есть загвоздка: в файле, который я прикрепил, макрос работает «на ура», а в полной базе после разъединения ячеек и применения макроса все ячейки заполняются данными из первой строки над выделенным интервалом.. Что я сделал не так, или чего НЕ сделал?
Забыл предупредить — в Excel есть ограничение на количество одновременно выделенных несвязанных диапазонов. Не помню, сколько, да это и не важно. Просто следите за тем, чтобы одновременно было выделено для заполнения не более 10-15 тысяч строк (опытным путем определите — зависит еще и от количества столбцов).
Скажи мне, кудесник, любимец ба’гов…
Яндекс-деньги: 41001632713405
Webmoney: R289877159277; Z102172301748; E177867141995
Да, именно в этом и была проблема, спасибо!
Но вопросы еще остались. Во время заполнения пустых полей из верхних ячеек формула не останавливается, если верхняя ячейка была пустой, а идёт до ячейки со значением и берёт его, что нарушает истинность данных (значение попадает из другого контракта). Возможно ли этого избежать?
а вот так долго будет?
Sub ert()
Dim r As Range, adr$
If Selection.Count > 10000 Then MsgBox "Лишка Selection", 64: Exit Sub
Application.ScreenUpdating = 0
For Each r In Selection.Cells
If r.MergeCells Then
With r
adr = .MergeArea.Address
r.UnMerge: r.AutoFill Range(adr), 1
End With
End If
Next r
Application.ScreenUpdating = 1
End Sub
Цитата: SS78RUS от 11.05.2012, 17:00Но вопросы еще остались. Во время заполнения пустых полей из верхних ячеек формула не останавливается, если верхняя ячейка была пустой, а идёт до ячейки со значением и берёт его, что нарушает истинность данных (значение попадает из другого контракта). Возможно ли этого избежать?
Возможно. Варианты:
1) Нефиг начинать с пустой сверху ячейки. Этим Вы нарушаете истинность вот этого:
ЦитироватьВыделяем весь блок, разъединяем все, далее Главная — Найти и выделить — Выделение группы ячеек — Пустые ячейки — ОК. Затем жмем равно (=), стрелочку вверх и Контрл +Ентер (сразу). Потом опять выделяем весь блок, копируем и вставляем значениями.
2) Добавить после строки с Еррором такую
q = 1 / (Selection.Range(«A1») <> «»)
Скажи мне, кудесник, любимец ба’гов…
Яндекс-деньги: 41001632713405
Webmoney: R289877159277; Z102172301748; E177867141995
Объединил оба макроса — за час обработал реестр из 50’000 контрактов (более 1’000’000 ячеек), впереди еще 450’000, так что очень пригодится!
Большое спасибо за помощь! Всё работает!
- Профессиональные приемы работы в Microsoft Excel
-
►
Обмен опытом -
►
Microsoft Excel -
►
Проблема объединённых ячеек при сортировке.
Office 365 ProPlus переименован в Майкрософт 365 корпоративные приложения. Для получения дополнительной информации об этом изменении прочитайте этот блог.
Симптомы
При сортировке диапазона в листах Microsoft Excel Excel не сортировать диапазон. Кроме того, может появиться следующее сообщение об ошибке:
Эта операция требует одинакового размера объединенных ячеек.
Причина
Эта проблема может возникнуть при сортировке ряда ячеек, а также при следующих условиях:
- Вы ранее объединены некоторые из ячеек, но не все из ячеек в диапазоне сортировки.
- Вы ранее слили все ячейки в диапазоне сортировки, и ячейки не имеют одинаковых размеров.
Обходной путь
Чтобы решить эту проблему, разделите все объединенные ячейки в диапазоне или объединяем все ячейки в диапазоне, чтобы объединенные ячейки были одинакового размера. Каждая объединенная ячейка в диапазоне должна занимать одинаковое количество строк и столбцов, что и другие слитые ячейки в диапазоне.
Общее решение
- Выберите весь диапазон, который необходимо сортировать.
- В группе Выравнивание на вкладке Главная выберите диалоговое окно Выравнивание.
- Выберите вкладку Выравнивание, а затем очистим поле ячейки Merge.
- Нажмите кнопку ОК.
Это может изменить расположение данных в диапазоне.
Пример решения
В таблицу введите следующие данные:
Объединение ячеек A1 и B1, A2 и B2, а также A3 и B3. Для этого выполните следующие действия:
Выберите каждую пару ячеек.
Выберите диалоговое окно Выравнивание в группе Выравнивание на вкладке Главная.
Выберите вкладку Выравнивание, а затем выберите поле ячейки слияния.
Нажмите кнопку ОК.
Не объединяй ячейки в столбце C.
Выберите ячейки A1:C3, выберите фильтр сортировки & в группе редактирования на вкладке Главная, а затем нажмите настраиваемый сорт.
В поле Сортировка выберите «Column C» рядом с Sort By и выберите ОК. Сообщение об ошибке должно быть описано выше.
Чтобы устранить проблему, сделайте одно из следующих:
- Разгружая ячейки A1:B3, чтобы в выборе не было объединенных ячеек.
- Объединяем ячейки C1 и D1, C2 и D2 и C3 и D3, чтобы столбец C был таким же размером (слит) как столбец A/B. Затем выберите ячейки A1:D3 и повторите шаги 3 и 4 с помощью единого размера диапазона.
—>
Сортировка по алфавиту в Microsoft Excel
Способ 1: Кнопки быстрой сортировки
В Excel есть кнопки, отвечающие за быструю сортировку выделенного массива данных. Их использование станет оптимальным в тех ситуациях, когда нужно обработать ячейки всего один раз, предварительно выделив необходимые.
- Зажмите левую кнопку мыши и выделите все значения, которые далее будут подвергаться сортировке.
На вкладке «Главная» откройте выпадающее меню «Редактирование».
Если появляется оповещение об обнаружении данных вне диапазона, потребуется выбрать, расширять его или сортировать только в пределах указанного выделения. Рассмотрим сначала первый вариант.
При его использовании соседние ячейки, зависящие от общей таблицы, подстраиваются под порядок расположения текста, то есть если напротив ячейки «Август» находится значение «27», оно и остается напротив этого же слова.
Так перемещается только указанный текст, а ячейки напротив него остаются нетронутыми. Это означает, что произойдет смещение данных, если раньше между ними была какая-то связь.
Если вы еще не решили, хотите сортировать только указанный диапазон или нужно захватывать соседние ячейки, проверьте каждый вариант, отменяя его нажатием горячей клавиши Ctrl + Z. Так проще определиться с изменениями, происходящими в таблице.
Способ 2: Настраиваемая сортировка
Настраиваемая сортировка позволяет более гибко выстроить расположение элементов в таблице, учитывая несколько уровней и разных диапазонов данных. Для ее создания используется специальное меню, которое и возьмем во внимание далее.
- Рекомендуем сразу выделить всю таблицу, если помимо сортировки по алфавиту вы желаете добавить еще несколько уровней.
Затем в том же разделе «Редактирование» выбирайте пункт «Настраиваемая сортировка».
В выпадающем меню «Сортировать по» укажите столбец, который затрагивает сортировка.
В качестве режима сортировки выбирается тип «Значения ячеек».
Осталось указать только порядок «От А до Я» или «От Я до А».
Если надо сортировать и другие столбцы, добавьте их в качестве уровней и выполните такую же настройку.
Вернитесь к таблице и убедитесь в том, что все действия выполнены правильно.
Способ 3: Формула сортировки
Недостатки предыдущих методов состоят в том, что они сортируют только единоразово, а динамически при внесении изменений таблица не меняется. Если вас не устраивает такой вариант, понадобится вручную создать формулу сортировки, которая при добавлении или удалении элементов автоматически пересчитает их и поставит в нужном порядке. Формул будет несколько, поскольку пока разработчики не добавили специальную функцию, которая позволяла бы обойтись без применения вспомогательных подсчетов. Весь дальнейший процесс состоит из нескольких этапов для правильного понимания принципа сортировки по алфавиту.
Шаг 1: Создание вспомогательной формулы
Основная задача – создать вспомогательную формулу, которая анализирует слова в ячейках и определяет их порядковый номер в будущем отсортированном по алфавиту списке. Это происходит при сравнении встроенными алгоритмами Excel, работающими по принципу анализа кодировки. Детально разбирать работу этой формулы не будем, только покажем ее создание.
- Для работы с будущими вычислениями понадобится создать из ячеек группу, для чего их необходимо выделить и в специально отведенном поле сверху задать новое название.
Теперь диапазон выделенных ячеек имеет собственное имя, отвечающее за его содержимое, — в нашем случае это фрукты. Если вводите несколько слов в названии, не ставьте пробел, а используйте вместо него нижнее подчеркивание: «(пример_текста)».
В новой клетке создадим формулу СЧЁТЕСЛИ , которая считает ячейки, удовлетворяющие условие. В качестве диапазона указывайте созданную только что группу, затем первую ячейку для сравнения. В итоге первоначальный вид формулы таков: =СЧЁТЕСЛИ(Фрукты;A1) .
Сейчас результатом этой формулы будет «1», поскольку ее запись не совсем верна для будущих расчетов, поэтому добавьте выражение » перед номером первой ячейки.
Растяните формулу, зажав край ячейки, до конца будущего списка для сортировки.
Переименуйте диапазон с числами в группу — это понадобится при составлении следующей формулы.
Шаг 2: Создание формулы сортировки
Вспомогательная формула готова и работает правильно, поэтому можно приступить к созданию основной функции, которая и будет заниматься сортировкой благодаря уже существующему автоматическому определителю позиций.
- В новой ячейке начните вводить =ПОИСКПОЗ(СТРОКА(A1) . Эта формула отвечает за поиск позиции строки, из-за чего и следует указать аргумент «A1».
Далее для простоты добавления именных диапазонов перейдите в «Формулы», разверните меню «Определенные имена» и выберите «Использовать в формуле».
Добавьте диапазон со вспомогательной формулой и укажите для него тип сопоставления «Точное совпадение» в выпадающем списке, который появится после добавления «;».
Завершите создание формулы, обернув ее в функцию ИНДЕКС , которая будет работать с массивом названий.
Проверьте результат и затем растяните формулу так, как это уже было показано выше.
Теперь вы получите корректно работающий динамический список, отсортированный по алфавиту.
Для упрощения понимания отдельно предоставляем полную формулу:
=(ИНДЕКС(Фрукты;ПОИСКПОЗ(СТРОКА(A1);номер_слова;0))) , вам же останется только отредактировать ее под свои цели и растянуть на необходимый диапазон ячеек.
Шаг 3: Модернизации формулы для повторных названий
Единственный недостаток созданной только что формулы – некорректная ее работа при наличии повторных названий, что вы можете заметить на представленном далее скриншоте. Это связано с тем, что вспомогательная функция не в состоянии правильно обработать повторяющиеся слова, поэтому ее придется немного усовершенствовать, если вы хотите использовать в списке повторы.
- Откройте вспомогательную формулу и уберите знак » СЧЁТЕСЛИ работал только при условии равенства.
Добавьте вторую часть — +СЧЁТЕСЛИ($A$1:A1;A1) , позволяющую нормально записывать одинаковые слова в последовательном порядке.
Снова растяните формулу, чтобы она изменилась на всех ячейках.
Добавьте в список повторяющиеся названия, чтобы проверить их нормальное отображение.
Мы рады, что смогли помочь Вам в решении проблемы.
Помимо этой статьи, на сайте еще 11905 инструкций.
Добавьте сайт Lumpics.ru в закладки (CTRL+D) и мы точно еще пригодимся вам.
Отблагодарите автора, поделитесь статьей в социальных сетях.
Опишите, что у вас не получилось. Наши специалисты постараются ответить максимально быстро.
Пытался исправить: через «Поиск и Замена», но оно видимо не все объединённые ячейки разъединило. Как можно отсортировать таблицу по одному столбцу хотя бы алфавиту, при этом не объединяя ячейки, или может быть есть способ, как можно обойти эту ошибку не изменяя таблицу визуально(это было бы вообще идеально) |
|
Юрий М Модератор Сообщений: 60588 Контакты см. в профиле |
#2 31.12.2016 01:39:02
Укоротите её или создайте новый файл-аналог с идентичной структурой. |
||
AAF Пользователь Сообщений: 1000 |
Velikashkeee, я не трогал пышную шапку Вашей таблицы, а начиная с шестой строки и ниже все объединения снял… Я понял так, что они оказались там случайно, например, из-за операции ВСТАВИТЬ строку перед 6-ой строкой, при которой формат берется с предыдущей строки… Таблица у Вас крутая . Я надеюсь, что в области данных Вам не требуется объединение ячеек!!! А вообще-то оно удобно для отчетных форм, а для таблиц…. Я от этого объединения отказался еще при 97 офисе.. Как ни крути грабли где-нить вылезут. Изменено: AAF — 31.12.2016 06:25:32 |
AAF Пользователь Сообщений: 1000 |
Velikashkeee, скажите, Ваша таблица заполняется вручную или существуют посторонние процедуры вставки/копирования? Просто они могут без Вашего согласия вставлять объединенные ячейки вместе с данными… Если вручную, то снимаю шляпу… И возникает вопрос как Вы потом анализируете накопленный материал, но это уже не по теме, но поражает простор для применения автоматизации (отчетов, анализа, планировщиков и пр.) |
AAF, подскажите, как вы сняли все объединения начиная с 6-ой строки , так как таблицу я урезал, и пациентов там около 9 сотен Эта таблицу сделали, как я понял, уже давно, для студентов меда, могу предположить, что процедуры вставки присутствуют |
|
AAF Пользователь Сообщений: 1000 |
Выделяете все ячейки начиная с 6 и далше правой кнопкой Формат ячеек/выравнивание/объединение ячеек — поставить и снять галочку… |
Velikashkeee Пользователь Сообщений: 9 |
#9 31.12.2016 13:43:23 AAF,спасибо, теперь вроде бы всё хорошо сортирует) |