2674 3

Координатная подсветка в MS Excel

21.01.13
Работа с большими таблицами для бухгалтера — штука привычная. Объемными отчетами здесь никого не удивишь. Читать документы, которые перекрывают площадь современного монитора, бухгалтеру приходится постоянно. И не просто читать, а сверять, анализировать, искать ошибки, выполнять сложную и ответственную работу. Что бы ни говорили, занятие это не из приятных. Просматривать большие документы на экране тяжело. Пробегая взглядом вдоль таблицы, легко «перепрыгнуть» на соседнюю строку и допустить ошибку. В этом смысле с бумажным документом все намного проще — можно положить линейку или же листок бумаги. И тогда работать с таблицей будет удобнее. Многих ошибок удастся избежать. В связи с этим возникает вопрос: как создать такую линейку в MS Excel, чтобы, перемещаясь по листу, подсвечивать строку и колонку для активной ячейки. К сожалению, среди стандартных инструментов такой возможности нет. О том, как исправить эту ситуацию (причем простыми и доступными средствами!), я расскажу в этой статье.


 

Итак, наша цель — построить инструмент, который умеет отслеживать на экране местоположение активной ячейки, выделяя цветом текущую строку и столбец. В результате на листе появится своего рода «координатная линейка», и просматривать таблицу станет намного удобнее. Решить такую задачу можно по-разному. Например, обратиться к языку VBA (Visual Basic for Application) и написать специальную программу. Но я не сторонник этого подхода. И потому предлагаю начать со стандартных возможностей MS Excel.

 


Способ 1. Используем условный формат
и функцию «ЯЧЕЙКА()»

Для организации координатной подсветки нам нужно решить две проблемы:

1. Как-то определить номер строки и колонки, где находится активная ячейка.

2. Изменить формат этих строк и колонок, чтобы обозначить их на рабочем листе.

Для решения первой задачи мы задействуем функцию «ЯЧЕЙКА()» из стандартной библиотеки MS Excel. После этого, зная номер конкретной строки и колонки, мы применим к ним условное форматирование. Как видите, схема проста. Остается реализовать ее практически. Начнем с функции «ЯЧЕЙКА()». Она позволяет получить массу полезной информации о любой ячейке рабочего листа. Например, узнать ее высоту, ширину, номер строки или колонки, числовой формат и т. п. У функции два аргумента:

 ключевое слово, это может быть «"строка"» или «"столбец"»;

—  адрес ячейки, для которой нужно выяснить ее параметры.

Хитрость состоит в том, что второй аргумент указывать не обязательно. И тогда функция вернет параметры для текущей ячейки. То есть через функцию «ЯЧЕЙКА()» мы сможем определить номер строки и колонки для активной ячейки рабочего листа — именно то, что нам нужно для решения первой задачи.

Переходим к условному форматированию. Этот полезный инструмент Excel позволит нам изменить формат ячеек, если они удовлетворяют определенному условию. Причем (и это очень важно!) условие в данном случае можно задать при помощи формулы. Итак, все инструменты для решения задачи, похоже, у нас есть. Переходим к деталям. Посмотрим, как все это выглядит в программе Excel 2010. Делаем так:

1. Открываем (или создаем новый) документ Excel. Пусть это будет база данных, как на рис. 1.

2. Щелкаем мышкой на ячейке «A1».

3. Переходим в меню «Главная». В группе «Стили» щелкаем на иконке «Условное форматирование» (рис. 2). Откроется меню, как на рис. 3.

 

4. Из этого меню выбираем пункт «Создать правило…». Откроется окно «Создание правила форматирования», изображенное на рис. 4.

5. В разделе «Выберите тип правила:» находим вариант «Использовать формулу для определения форматируемых ячеек».

6. В поле «Измените описание правила:» вводим формулу «=ИЛИ(ЯЧЕЙКА("строка")=СТРОКА(A1);ЯЧЕЙКА("столбец")=СТОЛБЕЦ(A1))».

7. Щелкаем на кнопке «Формат…» (рис. 4). Откроется окно «Формат ячеек», изображенное на рис. 5.

8. В этом окне переходим на закладку «Заливка». В предложенной палитре выбираем цвет фона. Например, светло-серый вариант.

9. В окне «Формат ячеек» нажимаем «ОК».

10. В окне «Создание правила форматирования» нажимаем «ОК». Условный формат для ячейки «A1» готов. Остается скопировать его на весь рабочий лист.

11. Оставаясь на ячейке «A1», щелкаем на кнопке «Формат по образцу» (рис. 6).

12. Обводим при помощи мышки (не клавиатуры!) блок ячеек, где нужно создать координатное выделение.

Совет В Excel 2003 (или более ранних версиях этой программы) вызвать инструмент условного форматирования можно через меню «Формат → Условное форматирование…». После чего в окне настроек установить параметр «Условие 1» в положение «формула».

Пару слов о работе формулы и о том, как она связана с условным форматированием. Напомню, что сейчас мы находимся в ячейке «A1», причем формулу мы записали именно для этой ячейки. Теперь по порядку. Начнем с выражения «ЯЧЕЙКА("строка")». Поскольку в функции адрес явно не указан, номер строки она определит для активной ячейки рабочего листа. Это значение мы сравним с номером строки для адреса «A1». Этот номер нам вернет функция «СТРОКА(A1)». И тогда, если указатель активной ячейки находится в первой строке рабочего листа, выражение «ЯЧЕЙКА("строка")=СТРОКА(A1)» будет истинным. В противном случае эта формула вернет значение «ЛОЖЬ». Вторая часть формулы, по сути, такая же, только проверяет она номер колонки. То есть выражение «ЯЧЕЙКА("столбец") =СТОЛБЕЦ(A1))» сравнивает номер колонки для активной ячейки с номером столбца для адреса «A1».

Все, что остается сделать, — это объединить оба выражения через операцию «ИЛИ()». И тогда полученная формула будет означать: «если активная ячейка находится в первой строке или в первой колонке рабочего листа, верни значение «ИСТИНА» и включи инструмент условного форматирования». Для ячейки «A1» все верно. Остается распространить это правило на всю область рабочего листа. Для этого мы воспользовались иконкой копирования формата ячеек. В этом случае адреса в формуле условного форматирования будут преобразованы по обычным правилам Excel. То есть, при копировании по вертикали поменяются номера строк. При копировании в стороны изменятся номера колонок. Например, формула для условного форматирования ячейки «B1» станет такой: «=ИЛИ(ЯЧЕЙКА("строка")=СТРОКА(B1);ЯЧЕЙКА("столбец")= СТОЛБЕЦ(B1))». А в результате строка и колонка текущей ячейки поменяет свой цвет. Это и есть координатное выделение, которое мы хотели получить.

Но это еще не все. Дело в том, что правило условного форматирования срабатывает только при обновлении рабочего листа. Например, в момент пересчета формул. Просто перемещение активной ячейки Excel таким обновлением не считает. И поэтому координатная подсветка работать не будет. Для решения проблемы нам придется искусственно обновить лист. Проще всего это сделать при помощи небольшого макроса, добавив его в свойства рабочего листа. Для этого делаем так:

1. Щелкаем правой кнопкой мышки на листе с параметрами условного форматирования. Откроется контекстное меню, как на рис. 7.

2. Из этого меню выбираем пункт «Исходный текст». Откроется окно редактора Visual Basic.

3. В этом окне вставляем такой текст:

«Private Sub Worksheet_SelectionChange(ByVal Target As Range)

ActiveCell.Calculate

End Sub».

4. Закрываем окно Visual Basic. На предложение сохранить изменения отвечаем утвердительно.

Важно! Текст модуля на Visual Basic нужно вводить без окаймляющих кавычек.

Теперь при любом перемещении активной ячейки будет активировано условное форматирование, а на листе появится координатное выделение строк и колонок, как показано на рис. 8. Задача решена.

Посмотрим, что мы получили на самом деле, каковы достоинства и недостатки нашего подхода. Вначале о преимуществах, среди которых я бы указал такие:

—  инструмент условного форматирования не нарушает функционал таблицы, работают все приемы копирования, перемещения ячеек;

—  работа с условными форматами не нарушает форматирование таблицы;

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

—  макросы на VBA нужны в минимальном объеме, прикрепить их к рабочему листу не составляет труда.

Что касается недостатков, они тоже есть, в частности:

—  формулу для условного форматирования нужно создавать вручную;

—  нет способа быстро включить или отключить координатную подсветку на рабочем листе — для этого нужно удалить правило условного форматирования, а это потребует времени;

—  при копировании ячеек с других рабочих книг или листов для них придется восстанавливать правила условного форматирования.

На мой взгляд, указанные проблемы не относятся к разряду существенных. По личному опыту скажу, что работа с координатным вычислением на базе условного форматирования не вызывает никаких проблем. Тем не менее имеет смысл посмотреть и на другие способы решения задачи. Чем мы сейчас и займемся.

 


Способ 2. Применяем надстройку «FollowCellPointer»

В результате пятнадцатиминутного общения с Google я обнаружил по меньшей мере десяток вариантов для реализации координатной подсветки с использованием макросов на VBA. Все они отличались в деталях, но принцип был один: для обозначения строки и колонки эти макросы использовали выделение несвязных диапазонов. В ручном режиме это можно сделать, нажав клавишу «Ctrl», а затем щелчком мышки выделить строку и колонку. Такие варианты я отбросил без сожаления — когда на листе выделен несвязный диапазон, не работают операции копирования и перемещения ячеек. А это — огромный недостаток при работе с таблицей. Да и углубляться в тонкости работы с VBA, откровенно говоря, не хотелось бы. Но одна ссылка меня заинтересовала. Речь шла о готовой надстройке «FollowCellPointer», которую раздает на своем сайте Jan Karel Pieterse (Нидерланды). Продукт этот бесплатный, построен он на макросах Excel и позволяет рисовать на листе графические линии для обозначения строки и колонки активной ячейки.

Прежде чем познакомится с этой программой, ее нужно скачать. Для этого делаем так:

1. Заходим на сайт http://www.jkp-ads.com и щелкаем на гиперссылке «free utilities» (рис. 9). Откроется раздел загрузок, который оформлен в виде таблицы.

2. В предложенном перечне находим программу «FollowCellPointer» (рис. 9) и щелкаем на ссылке левой кнопкой мышки. Через некоторое время в папке загрузок вашего браузера появится файл «followcellpointer.zip».

3. Копируем этот файл в любую папку и распаковываем его. Все, надстройка готова для инсталляции.

Важно! Для работы с файлом «followcellpointer.zip» на вашем компьютере должна быть установлена программа-архиватор (WinRar, WinZip или аналогичная).

В подавляющем большинстве случаев такая программа есть. И тогда для распаковки достаточно щелкнуть на имени файла левой кнопкой мышки, затем выбрать из контекстного меню «Извлечь все…» или «Распаковать в текущую папку». В результате в этой папке появится файл «FollowCellPointer.xla». Щелчком мышки загружаем его в MS Excel. Надстройка готова к работе.

Важно! Для работы надстройки в Excel 2010 скопируйте файл «FollowCellPointer.xla» в системную папку дополнений MS Office. По умолчанию путь к этой папке выглядит так: «C:\Users\…\AppData\Roaming\Microsoft\AddIns». В этой строке вместо символа «» нужно поставить имя пользователя для вашей учетной записи Windows.

Дальше делаем так:

1. Открываем или создаем новый документ.

2. Вызываем меню «Файл», затем щелкаем на пункт «Параметры».

3. В окне настроек Excel переходим в раздел «Надстройки» и нажимаем кнопку «Перейти…» (рис. 10). Откроется одноименное окно «Надстройки», как на рис. 10.

4. В этом окне ставим «галочку» возле строки «FollowCellPointer».

5. В окне «Надстройки» нажимаем «ОК».

6. Переходим в меню «Надстройки». Лента этого меню показана на рис. 11. На ней появится дополнительная группа с иконками: «Enable», «Disable», «Anchor», «ClearAnchor», «Format».

7. Щелкаем на иконке «Enable». Возле активной ячейки появятся тонкие линии, как показано на рис. 12. На мой взгляд, весьма изящное решение, вполне заменяет координатную подсветку строк и колонок.

Чтобы отключить этот режим, щелкаем на кнопке «Disable».

Как и большинство программ, «FollowCell- Pointer» содержит ряд полезных режимов и настроек. Вот основные из них.

Инструмент «Anchor» (рис. 11) позволяет зафиксировать обозначение текущей ячейки, после чего продолжить работу в обычном режиме. Такая возможность полезна, например, при анализе связей между ячейками таблицы. Пример использования режима «Anchor» показан на рис. 13.

Кнопка «ClearAnchor» стирает отметку, сделанную в режиме «Anchor».

Последней иконкой, относящейся к «FollowCellPointer», является кнопка «Format». Щелчок на этой кнопке открывает окно «Format Arrows», изображенное на рис. 14. Несмотря на английский интерфейс, здесь все просто. Большинство параметров в этом окне позволяют изменить форму стрелок и линий для отметки текущей ячейки. Приведу вкратце основные настройки, представленные в окне «Format Arrows»:

— «Arrow head style» изменяет форму указателей на линиях, которые ведут к активной ячейке. Возможные варианты: «Diamond» — указатели выглядят как ромбики, «Open» — тонкие стрелки, «Oval» — круглые указатели, «None» — линии будут показаны без указателей, «Triangle» — указатели выглядят как заполненные стрелки (в виде треугольников);

— «Arrow head length» позволяет отрегулировать длину указателей на конце линий. Предусмотрены два варианта: «Short» — короткий, и «Long» — продолговатый;

— «Arrow head width» — здесь можно задать ширину указателя: «Narrow» — тонкий, и «Wide» — широкий;

— «Arrow line width» — этот параметр влияет на толщину линий: «1» — тонкая линия, «2» — линия с полужирным начертанием;

— «Transparency» изменяет способ рисования линий. Параметр может принимать два значения: «Opaque» — рисовать обычные линии, «Transparent» — рисовать полупрозрачные линии.

Кнопка «Line Color» (рис. 14) позволяет выбрать цвет линии из стандартной палитры MS Excel.

Разумеется, настройка параметров — дело сугубо индивидуальное. Мне понравился вариант с полупрозрачными линиями и округлыми окончаниями. А подробный состав моих настроек выглядит так: «Arrow head length» = «Short», «Arrow head width» = «Narrow», «Arrow line width» = «1», «Transparency» = «Transparent».

На сегодня все. Надеюсь, что материал этой статьи сделает вашу работу с большими таблицами проще и удобнее. До новых встреч!

 

Жду ваших вопросов, замечаний и предложений на bk@id.factor.ua, nictomkar@rambler.ru или на форуме редакции www.bk.factor.ua/forum.



Помітили помилку? Виділіть її та натисніть Ctrl+Enter, щоб повідомити нас про це
загрузка...
Коментарі (3)
Эдуард
12.03.2016
у меня в excel 2003, когда вставляешь в Visual Basic ничего не происходит. Где-то там есть ошибка
Геннадий
09.08.2016
В Excel 2010 по способу 2 не появился пункт в меню "Надстройки". Соответственно нет возможности управлять надстройкой. Что нужно сделать, чтобы такой пункт появился в меню?
Дима
05.12.2016
Спасибо, способ 2 работает на ура! PS Геннадий смотри вкладку "FCP"