Алан спросил, есть ли способ быстро и легко определить, какие ячейки объединены в книгу, созданную кем-то другим. На самом деле существует несколько различных способов идентификации этих ячеек.
Один из методов идентификации ячеек – использовать возможности поиска Excel. Выполните следующие действия:
- Нажмите Ctrl + F . Excel отображает вкладку «Найти» в диалоговом окне «Найти и заменить».
- При необходимости нажмите кнопку «Параметры», чтобы убедиться, что диалоговое окно «Найти и заменить» развернуто и отображает все параметры. (См. Рис. 1.)
- Убедитесь, что поле «Найти» пусто.
- С точкой вставки в в поле “Найти” нажмите кнопку “Формат”. Excel отображает диалоговое окно «Найти формат».
- Убедитесь, что отображается вкладка «Выравнивание». (См. Рис. 2.)
- Убедитесь, что установлен флажок «Объединить ячейки» (флажок должен быть установлен).
- Нажмите OK, чтобы закрыть диалоговое окно “Найти формат”.
- Нажмите “Найти все”.
Рис. 1. Вкладка «Найти» диалогового окна «Найти и заменить».
Рис. 2. Вкладка «Выравнивание» диалогового окна «Найти формат».
Excel выполнит поиск всех объединенных ячеек и, если они расположены, ячейки отображаются в нижней части диалогового окна «Найти и заменить». Затем вы можете выбрать один из найденных диапазонов, и соответствующий диапазон будет выбран на листе.
При желании вы можете использовать макрос для поиска различных объединенных ячеек на листе. Следующий макрос показывает, пожалуй, самый простой способ сделать это:
Sub FindMerged1 () Dim c As Range For Each c In ActiveSheet.UsedRange Если c.MergeCells, то MsgBox c.Address & "объединяется" End If NextEnd Sub
Этот конкретный макрос проходит через все ячейки на листе (ну, по крайней мере, те, которые находятся в UsedRange) и, если ячейка является частью объединенной ячейки, сообщение отображается окно. Обратите внимание, что соответствующее свойство, которое проверяется, – это свойство MergeCells. Для него установлено значение True, если ячейка объединена с другой ячейкой.
Конечно, выполнение такого макроса может занять довольно много времени, если на листе много ячеек, и даже дольше, если большое количество этих ячеек объединено. Ваш макрос работал бы быстрее, если бы он не останавливался на каждой объединенной ячейке и не отображал диалоговое окно. Следующая версия использует другой подход, заполняя каждую объединенную ячейку желтым цветом:
Sub FindMerged2 () Dim c As Range For Each c In ActiveSheet.UsedRange If c.MergeCells Then c.Interior. ColorIndex = 36 End If NextEnd Sub
Вариантом этого подхода может быть создание пользовательской функции, которая просто возвращает True или False, если ячейка объединена:
Функция FindMerged3 (rCell как диапазон) FindMerged3 = rCell. Функция MergeCellsEnd
С помощью этой простой функции вы можете затем использовать условное форматирование, чтобы каким-то образом выделить ячейки, если они объединены. (Если функция возвращает True, тогда условное форматирование применяет любое указанное вами форматирование к ячейке.)
Наконец, если вам нужен список ячеек, которые объединены на листе, вы можете просто иметь свой Макрос объединяет список вместо раскрашивания ячеек:
Sub FindMerged4 () Dim c As Range Dim sMsg As String sMsg = "" For Each c In ActiveSheet.UsedRange If c.MergeCells Then If sMsg = "" Then sMsg = "Объединенные ячейки листа:" & vbCr End If sMsg = sMsg & c.Address & vbCr End If Next If sMsg = "" Тогда sMsg = "Нет объединенных ячеек листа." End If MsgBox sMsgEnd Sub
В этом варианте в конце макроса отображается одно окно сообщения, в котором указаны адреса всех объединенных ячеек, расположенных на листе.