Координатное выделение строки и столбца в excel
Надстройка пригодится тем, кто часто работает с большими таблицами, просматривая их и сопоставляя данные в строках и столбцах. Что дает эта надстройка? Она выделяет столбец и строку таблицы на пересечении выделенной ячейки, благодаря чему можно просмотреть все данные в столбце и строке активной ячейки, не перепроверяя себя лишний раз – "А в том ли столбце я смотрю данные?".
Метод - выбор метода подсветки строки и столбца, их два:
- выделение - строка и столбец выделяются так же, как если бы вы выделяли ячейки мышкой. У этого метода есть один недостаток. Если на листе в этом режиме будут сделаны изменения(удаление значения ячейки), то отменить их будет невозможно
- условное форматирование - строка и столбец выделяются при помощи условного форматирования. Можно выбрать один из шести цветов для подсветки выделения строки и столбца. У такого подхода тоже есть недостаток. Все условное форматирование, примененное к текущему листу ранее, будет удалено
Весь лист - выделяются строка и столбец всего листа.
Вся таблица данных - выделяются строка и столбец только в пределах используемого диапазона данных.
Выбранный диапазон - выделяются строка и столбец только в пределах указанного вами диапазона. Особенность: не допускается выделение несвязанных диапазонов.
Область применения - выбирается область листа, к которой применяется координатное выделение:
- только строка - выделяется только строка активной ячейки
- только столбец - выделяется только столбец активной ячейки
- строка и столбец - выделяется строка и столбец на пересечении активной ячейки
Отменить Координатное выделение - отменяет примененное координатное выделение.
Внимание! Координатное выделение действует во всех открытых книгах во всех листах до тех пор, пока вы не отключите его через пункт «Отменить координатное выделение».
Важно! При примененном координатном выделении невозможно скопировать выделенный диапазон, однако можно удалить значение активной ячейки (будет удалено только значение одной ячейки, расположенной на пересечении строки и столбца).
ExcelVBA_KoordSel.zip (49,5 KiB, 5 254 скачиваний)
В архиве расположен файл надстройки. Прежде чем установить надстройку, необходимо её распаковать из архива на жесткий диск, после чего установить. Как установить надстройку: Установка надстроек
Надстройка распространяется бесплатно и с открытыми исходными кодами - смотрите, изучайте, меняйте под себя.
Самый важный момент для тех, кого не устроит цвет выделения по умолчанию: чтобы изменить цвет выделения ячеек через условное форматирование, необходимо перейти в модуль mKoordSelection, найти вверху строку
Public Const lKS_FC_Color As Long = 10921638
и заменить число 10921638 на числовой код нужного цвета заливки. Подобрать нужный цвет можно следующим образом:
- назначаем заливке любой ячейки нужный цвет
- выделяем эту ячейку и выполняем код:
Sub GetActiveCellColor() MsgBox ActiveCell.Interior.Color, vbInformation, sAPP_NAME End Sub
этот код так же есть внутри надстройки, поэтому его можно вызвать просто через Alt+F8
Изменить цвет выделения методом Обычного выделения нельзя. Это ограничение самого Excel. Можно изменить только изменением цветовых схем Windows.
Предположим, что нам с вами требуется визуализировать данные из вот такой таблицы со значениями продаж автомобилей по разным странам в 2021 году (реальные данные, взятые отсюда, кстати):
Поскольку количество рядов данных (стран) велико, то попытка запихнуть их все сразу в один график приведёт либо к ужасной "спагетти-диаграмме", либо к построению отдельных диаграмм на каждый ряд, что весьма громоздко.
Изящным решением этой проблемы может стать построение диаграммы только по данным из текущей строки, т. е. строки, где стоит активная ячейка:
Реализовать такое очень легко - потребуется лишь две формулы и один крохотный макрос в 3 строки.
Шаг 1. Номер текущей строки
Первое, что нам потребуется - это именованный диапазон, вычисляющий номер строки на листе, где сейчас стоит наша активная ячейка. Открываем на вкладке Формулы - Диспетчер имен (Formulas - Name manager) , жмём на кнопку Создать (Create) и вводим туда следующую конструкцию:
- Имя - любое подходящее имя для нашей переменной (в нашем случае это ТекСтрока)
- Область - здесь и далее нужно выбрать текущий лист, чтобы создаваемые имена были локальными
- Диапазон - тут используем функцию ЯЧЕЙКА (CELL) , которая умеет выдавать кучу разных параметров для заданной ячейки, в том числе и нужный нам номер строки - за это отвечает аргумент "строка".
Шаг 2. Ссылка на заголовок
Для отображения выбранной страны в заголовке и легенде диаграммы, нам нужно получить ссылку на ячейку с её (страны) названием из первого столбца. Для этого создаём еще один локальный (т.е. Область = текущий лист, а не Книга!) именованный диапазон со следующей формулой:
Здесь функция ИНДЕКС выбирает из заданного диапазона (столбца А, где лежат наши страны-подписи) ячейку с номером строки, который мы до этого определили.
Шаг 3. Ссылка на данные
Теперь аналогичным образом давайте получим ссылку на диапазон со всеми данными по продажам из текущей строки, где стоит сейчас активная ячейка. Создаём ещё один именованный диапазон со следующей формулой:
Здесь третий аргумент равный нулю заставляет ИНДЕКС вернуть в качестве результата не отдельное значение, а всю строку.
Шаг 4. Подставляем ссылки в диаграмму
Теперь выделим шапку таблицы и первую строку с данными (диапазон ) и построим по ним диаграмму через Вставка - Диаграммы (Insert - Charts) . Если выделить на диаграмме ряд с данными, то в строке формул отобразится функция РЯД (SERIES) - специальная функция, которую Excel автоматически использует при создании любой диаграммы, чтобы сослаться на исходные данные и подписи:
Аккуратно подменим в этой функции первый (подпись) и третий (данные) аргументы названиями наших диапазонов с шагов 2 и 3:
Диаграмма начнет отображать данные по продажам из текущей строки.
Шаг 5. Макрос пересчета
Остался последний штрих. Microsoft Excel пересчитывает формулы только при изменении данных на листе или при нажатии на клавишу F9 , а мы хотим, чтобы пересчёт происходил при изменении выделения, т. е. при любом перемещении активной ячейки по листу. Для этого потребуется добавить в нашу книгу простой макрос.
Щёлкните правой кнопкой мыши по ярлычку листа с данными и выберите команду Исходный код (Source code) . В открывшееся окно введём код макроса-обработчика события изменения выделения:
Как легко сообразить, всё, что он делает - это запускает пересчет листа при любом изменении положения активной ячейки.
Шаг 6. Подсветка текущей строки
Для наглядности, можно добавить ещё и правило условного форматирования для выделения цветом страны, которая сейчас отображается на графике. Для этого выделим таблицу и выберем Главная - Условное форматирование - Создать правило - Использовать формулу для определения форматируемых ячеек (Home - Conditional formatting - New rule - Use a formula to determine which cells to format) :
Здесь формула проверяет для каждой ячейки в таблице совпадение её номера строки с тем номером, что хранится в переменной ТекСтрока, и если совпадение имеет место, то срабатывает заливка выбранным цветом.
Вот и всё - просто и красиво, правда?
Примечания
- На больших таблицах вся эта красота может тормозить - условное форматирование штука ресурсоёмкая, да и пересчёт на каждое выделение тоже может быть тяжеловат.
- Чтобы на графике не пропадали данные при случайном выделении ячейки выше или ниже таблицы, можно добавить в имя ТекСтрока дополнительную проверку вложенными функциями ЕСЛИ вида:
У вас большой монитор, но таблицы, с которыми вы работаете - еще больше. И, пробегая взглядом по экрану в поисках нужной информации, всегда есть шанс "соскользнуть" взглядом на соседнюю строчку и посмотреть не туда. Я даже знаю людей, который для таких случаев постоянно держат недалеко от себя деревянную линейку, чтобы приложить ее к строке на мониторе. Технологии будущего!
А если при движении активной ячейки по листу будет подсвечиваться текущая строка и столбец? Своего рода координатное выделение примерно такого вида:
Поудобнее, чем линейка, правда?
Есть несколько способов разной сложности, чтобы реализовать такое. Каждый способ - со своими плюсами и минусами. Давайте разберем их детально.
Способ 1. Очевидный. Макрос, выделяющий текущую строку и столбец
Самый очевидный путь для решения нашей проблемы "в лоб" - нам нужен макрос, который будет отслеживать изменение выделения на листе и выделять целую строку и столбец для текущей ячейки. Также желательно иметь возможность при необходимости включать и отключать эту функцию, чтобы такое крестообразное выделение не мешало нам вводить, например, формулы, а работало только тогда, когда мы просматриваем список в поисках нужной информации. Это приводит нас к трем макросам (выделения, включения и выключения), которые нужно будет добавить в модуль листа.
Откройте лист со таблицей, в которой хотите получить такое координатное выделение. Щелкните правой кнопкой мыши по ярлычку листа и выберите в контекстном меню команду Исходный текст (Source Code). Должно открыться окно редактора Visual Basic. Скопируйте в него этот текст этих трех макросов:
Измените адрес рабочего диапазона на свой - именно в пределах этого диапазона и будет работать наше выделение. Затем закройте редактор Visual Basic и вернитесь в Excel.
Нажмите сочетание клавиш ALT+F8, чтобы открыть окно со списком доступных макросов. Макрос Selection_On, как нетрудно догадаться, включает координатное выделение на текущем листе, а макрос Selection_Off - выключает его. В этом же окне, нажав кнопку Параметры (Options) можно назначить этим макросам сочетания клавиш для удобного запуска.
Плюсы этого способа:
- относительная простота реализации
- выделение - операция безобидная и никак не изменяет содержимое или форматирование ячеек листа, все остается как есть
Минусы этого способа:
- такое выделение некорректно работает в том случае, если на листе есть объединенные ячейки - выделяются сразу все строки и столбцы, входящие в объединение
- если случайно нажать клавишу Delete, то очистится не только активная ячейка, а вся выделенная область, т.е. удалятся данные из всей строки и столбца
Способ 2. Оригинальный. Функция ЯЧЕЙКА + Условное форматирование
Этот способ хотя и имеет пару недостатков, мне представляется весьма изящным. Реализовать что-либо, используя только встроенные средства Excel, минимально влезая в программирование на VBA - высший пилотаж ;)
Способ основан на использовании функции ЯЧЕЙКА (CELL), которая может выдавать массу различной информации по заданной ячейке - высоту, ширину, номер строки-столбца, числовой формат и т.д.. Эта функция имеет два аргумента:
- кодовое слово для параметра, например "столбец" или "строка"
- адрес ячейки, для которой мы хотим определить значение этого параметра
Хитрость в том, что второй аргумент не является обязательным. Если он не указан, то берется текущая активная ячейка.
Вторая составляющая этого способа - условное форматирование. Эта крайне полезная функция Excel позволяет автоматически форматировать ячейки, если они удовлетворяют заданным условиям. Если соединить эти две идеи в одно целое, то получим следующий алгоритм реализации нашего координатного выделения через условное форматирование:
- Выделяем нашу таблицу, т.е. те ячейки, в которых в будущем должно отображаться координатное выделение.
- В Excel 2003 и более старших версиях открываем меню Формат - Условное форматирование - Формула (Format - Conditional Formatting - Formula) . В Excel 2007 и новее - жмем на вкладке Главная (Home) кнопку Условное форматирование - Создать правило (Conditional Formatting - Create Rule) и выбираем тип правила Использовать формулу для определения форматируемых ячеек (Use formula)
- Вводим формулу для нашего координатного выделения:
Все почти готово, но остался один нюанс. Дело в том, что Excel не считает изменение выделения изменением данных на листе. И, как следствие, не запускает пересчет формул и перекраску условного форматирования только при изменении положения активной ячейки. Поэтому добавим в модуль листа простой макрос, который будет это делать. Щелкните правой кнопкой мыши по ярлычку листа и выберите в контекстном меню команду Исходный текст (Source Code). Должно открыться окно редактора Visual Basic. Скопируйте в него этот текст этого простого макроса:
Теперь при изменении выделения будет запускаться процесс пересчета формулы с функцией ЯЧЕЙКА в условном форматировании и заливаться текущая строка и столбец.
Плюсы этого способа:
- Условное форматирование не нарушает пользовательское форматирование таблицы
- Этот вариант выделения корректно работает с объединенными ячейками.
- Нет риска удалить целую строку и столбец с данными при случайном нажатии Delete.
- Макросы используются минимально
Минусы этого способа:
- Формулу для условного форматирования надо вводить вручную.
- Нет быстрого способа включить-выключить такое форматирование - оно включено всегда, пока не будет удалено правило.
Способ 3. Оптимальный. Условное форматирование + макросы
Золотая середина. Используем механизм отслеживания выделения на листе при помощи макросов из способа-1 и добавим к нему безопасное выделение цветом с помощью условного форматирования из способа-2.
Откройте лист со таблицей, в которой хотите получить такое координатное выделение. Щелкните правой кнопкой мыши по ярлычку листа и выберите в контекстном меню команду Исходный текст (Source Code). Должно открыться окно редактора Visual Basic. Скопируйте в него этот текст этих трех макросов:
Не забудьте изменить адрес рабочего диапазона на адрес своей таблицы. Закройте редактор Visual Basic и вернитесь в Excel. Чтобы использовать добавленные макросы, нажмите сочетание клавиш ALT+F8 и действуйте аналогично способу 1.
Способ 4. Красивый. Надстройка FollowCellPointer
Excel MVP Jan Karel Pieterse родом из Нидерландов раздает у себя на сайте бесплатную надстройку FollowCellPointer(36Кб), которая решает ту же задачу, отрисовывая с помощью макросов графические линии-стрелки для подсветки текущей строки и столбца:
Красивое решение. Не без глюков местами, но попробовать точно стоит. Качаем архив, распаковываем на диск и устанавливаем надстройку:
Данная команда пригодится тем, кто часто работает с большими таблицами, просматривая их и сопоставляя данные в строках и столбцах. Делает она следующее: выделяет столбец и строку таблицы на пересечении выделенной ячейки, благодаря чему можно просмотреть все данные в столбце и строке активной ячейки, не сверяясь лишний раз - "А в том ли столбце я смотрю данные?"
Для настройки команды необходимо перейти на вкладку MulTEx -группа Специальные -Координатное выделение. После нажатия на большую иконку появится основная форма настроек:
Метод - выбор метода подсветки строки и столбца:
-
Выделение - строка и столбец выделяются обычным выделением. Если применен данный вид выделения, то при нажатии Delete будет удалено значение только активной ячейки (если выбрана область выделения "Строка и столбец", то из ячейки, которая находится на пересечении строки и столбца).
Весь лист - при выделении любой ячейки выделяются строка и столбец всего листа. Применяется по умолчанию.
Вся таблица данных - выделяются строка и столбец только в пределах используемого рабочего диапазона листа (прямоугольная область листа, в которой находятся какие-либо данные).
Выбранный диапазон - выделяются строка и столбец только в пределах указанного диапазона.
Область применения - выбирается область листа, к которой применяется координатное выделение:
- Только строка - выделяется только строка активной ячейки.
- Только столбец - выделяется только столбец активной ячейки.
- Строка и столбец - выделяется строка и столбец на пересечении активной ячейки.
Отключить Координатное выделение - выключает координатное выделение.
Помимо основной кнопки с формой, Координатное выделение предоставляет доступ к выпадающему меню, которое раскрывается нажатием на надпись Координатное выделение(со стрелочкой):
Меню дает доступ к командам, которые частично дублируют настройки основной формы (такие как метод выделения, цвет и отключение). Это позволяет управлять определенными настройками координатного выделения без вызова основной формы.
- Подсветка через УФ - устанавливает выделение методом Условного Форматирования. По умолчанию устанавливается выделение строки и столбца для рабочего диапазона листа (прямоугольная область листа, в которой находятся какие-либо данные) серым цветом, если ранее не были установлены иные параметры.
- Обычное выделение - устанавливает выделение обычным методом. По умолчанию устанавливается выделение строки и столбца для рабочего диапазона листа (прямоугольная область листа, в которой находятся какие-либо данные), если ранее не были установлены иные параметры.
- Установить цвет выделения - представляет собой выпадающее меню, в котором можно выбрать один из шести цветов выделения, если применен метод выделения Условным форматированием. По умолчанию применяется серый цвет. Можно выбрать один из шести "быстрых" цветов или назначить любой цвет из палитры, нажав "Выбрать цвет. "
Примечание: координатное выделение действует во всех открытых книгах во всех листах до тех пор, пока оно не будет отключено через пункт Отключить Координатное выделение.
Так при примененном координатном выделении невозможно скопировать/вставить выделенный диапазон, или удалить данные целой строки и столбца. Но можно удалить значение активной ячейки, расположенной на пересечении строки и столбца.
Данная команда пригодится тем, кто часто работает с большими таблицами, просматривая их и сопоставляя данные в строках и столбцах. Делает она следующее: выделяет столбец и строку таблицы на пересечении выделенной ячейки, благодаря чему можно просмотреть все данные в столбце и строке активной ячейки, не сверяясь лишний раз - "А в том ли столбце я смотрю данные?"
Для настройки команды необходимо перейти на вкладку MulTEx -группа Специальные -Координатное выделение. После нажатия на большую иконку появится основная форма настроек:
Метод - выбор метода подсветки строки и столбца:
-
Выделение - строка и столбец выделяются обычным выделением. Если применен данный вид выделения, то при нажатии Delete будет удалено значение только активной ячейки (если выбрана область выделения "Строка и столбец", то из ячейки, которая находится на пересечении строки и столбца).
Весь лист - при выделении любой ячейки выделяются строка и столбец всего листа. Применяется по умолчанию.
Вся таблица данных - выделяются строка и столбец только в пределах используемого рабочего диапазона листа (прямоугольная область листа, в которой находятся какие-либо данные).
Выбранный диапазон - выделяются строка и столбец только в пределах указанного диапазона.
Область применения - выбирается область листа, к которой применяется координатное выделение:
- Только строка - выделяется только строка активной ячейки.
- Только столбец - выделяется только столбец активной ячейки.
- Строка и столбец - выделяется строка и столбец на пересечении активной ячейки.
Отключить Координатное выделение - выключает координатное выделение.
Помимо основной кнопки с формой, Координатное выделение предоставляет доступ к выпадающему меню, которое раскрывается нажатием на надпись Координатное выделение(со стрелочкой):
Меню дает доступ к командам, которые частично дублируют настройки основной формы (такие как метод выделения, цвет и отключение). Это позволяет управлять определенными настройками координатного выделения без вызова основной формы.
- Подсветка через УФ - устанавливает выделение методом Условного Форматирования. По умолчанию устанавливается выделение строки и столбца для рабочего диапазона листа (прямоугольная область листа, в которой находятся какие-либо данные) серым цветом, если ранее не были установлены иные параметры.
- Обычное выделение - устанавливает выделение обычным методом. По умолчанию устанавливается выделение строки и столбца для рабочего диапазона листа (прямоугольная область листа, в которой находятся какие-либо данные), если ранее не были установлены иные параметры.
- Установить цвет выделения - представляет собой выпадающее меню, в котором можно выбрать один из шести цветов выделения, если применен метод выделения Условным форматированием. По умолчанию применяется серый цвет. Можно выбрать один из шести "быстрых" цветов или назначить любой цвет из палитры, нажав "Выбрать цвет. "
Примечание: координатное выделение действует во всех открытых книгах во всех листах до тех пор, пока оно не будет отключено через пункт Отключить Координатное выделение.
Так при примененном координатном выделении невозможно скопировать/вставить выделенный диапазон, или удалить данные целой строки и столбца. Но можно удалить значение активной ячейки, расположенной на пересечении строки и столбца.
Читайте также:
- Как отредактировать меню загрузки мультизагрузочной флешки созданной в программе winsetupfromusb
- Total commander удалить плагин
- 1с как в скд вызвать функцию общего модуля
- Программа diskpart обнаружила ошибку указанная служба не может быть запущена поскольку она отключена
- Как сделать сплошную строку в excel