Оглавление
В этом уроке вы узнаете 3 различных способа динамического выделения строки и столбца выделенной ячейки в Excel.
При длительном просмотре большого рабочего листа вы можете потерять представление о том, где находится ваш курсор и какие данные вы просматриваете. Чтобы точно знать, где вы находитесь в любой момент, заставьте Excel автоматически выделять для вас активную строку и столбец! Естественно, выделение должно быть динамическим и меняться каждый раз, когда вы выбираете другую ячейку. По сути, именно этого мы и добиваемся:
Автоматическое выделение строки и столбца выбранной ячейки с помощью VBA
Этот пример показывает, как можно программно выделить активный столбец и строку с помощью VBA. Для этого мы будем использовать SelectionChange событие Рабочий лист объект.
Сначала вы очистите цвет фона всех ячеек на листе, установив параметр ColorIndex 0. Затем вы выделяете всю строку и столбец активной ячейки, устанавливая их свойство ColorIndex свойство к номеру индекса для нужного цвета.
Private Sub Worksheet_SelectionChange( ByVal Target As Range) If Target.Cells.Count> 1 Then Exit Sub Application.ScreenUpdating = False 'Очистить цвет всех ячеек Cells.Interior.ColorIndex = 0 With Target 'Выделить строку и столбец выбранной ячейки .EntireRow.Interior.ColorIndex = 38 .EntireColumn.Interior.ColorIndex = 24 End With Application.ScreenUpdating = True End SubНастройка кода
Если вы хотите настроить код под свои нужды, эти небольшие советы могут вам пригодиться:
- Наш пример кода использует два разных цвета, показанных на рисунке выше - цветовой индекс 38 для строки и 24 для столбца. to изменить цвет выделения просто замените их на любые коды ColorIndex по вашему выбору.
- Чтобы получить цвет строки и столбца в таким же образом Используйте один и тот же номер цветового индекса для обоих цветов.
- Чтобы выделить только активный ряд удалите или закомментируйте эту строку: .EntireColumn.Interior.ColorIndex = 24
- Чтобы выделить только активная колонка удалите или закомментируйте эту строку: .EntireRow.Interior.ColorIndex = 38
Как добавить код в рабочий лист
Чтобы код бесшумно выполнялся в фоновом режиме на определенном рабочем листе, необходимо вставить его в окно кода, принадлежащее этому рабочему листу, а не в обычный модуль. Для этого выполните следующие действия:
- В рабочей книге нажмите Alt + F11, чтобы перейти в редактор VBA.
- В проводнике проекта слева вы увидите список всех открытых рабочих книг и их рабочих листов. Если вы его не видите, используйте сочетание клавиш Ctrl + R, чтобы вызвать окно проводника проекта.
- Найдите целевую рабочую книгу. В ее Объекты Microsoft Excel папку, дважды щелкните по листу, на котором вы хотите применить выделение. В данном примере это Лист 1 .
- В окне Код справа вставьте приведенный выше код.
- Сохраните ваш файл как Рабочая книга с поддержкой макросов (.xlsm).
Преимущества : все делается в бэкенде; не требуется никаких настроек/настроек на стороне пользователя; работает во всех версиях Excel.
Недостатки Но есть два существенных недостатка, которые делают эту технику неприменимой при определенных обстоятельствах:
- Код очищает цвета фона Если у вас есть цветные ячейки, не используйте это решение, так как пользовательское форматирование будет потеряно.
- Выполнение этого кода блоки функциональность отмены на листе, и вы не сможете отменить ошибочное действие, нажав Ctrl + Z .
Выделение активной строки и столбца без VBA
Лучшее, что вы можете получить для выделения выделенной строки и/или столбца без VBA, - это условное форматирование Excel. Чтобы настроить его, выполните следующие действия:
- Выберите набор данных, в котором должно быть выполнено выделение.
- На Главная во вкладке Стили группу, нажмите Новое правило .
- В Новое правило форматирования диалоговое окно, выберите Используйте формулу, чтобы определить, какие ячейки форматировать .
- В Форматируйте значения, для которых эта формула истинна введите одну из этих формул:
Чтобы выделить активный ряд :
=CELL("row")=ROW()
Чтобы выделить активная колонка :
=CELL("col")=COLUMN()
Чтобы выделить активная строка и столбец :
=OR(CELL("row")=ROW(), CELL("col")= COLUMN())
Все формулы используют функцию CELL для возврата номера строки/столбца выбранной ячейки.
- Нажмите кнопку Формат переключитесь на кнопку Заполнить вкладку и выберите цвет, который вам нравится.
- Нажмите OK дважды, чтобы закрыть оба диалоговых окна.
Если вы чувствуете, что вам нужны более подробные инструкции, посмотрите статью Как создать правило условного форматирования на основе формулы.
Для данного примера мы выбрали формулу OR, чтобы затенять столбец и строку одним цветом. Это требует меньше работы и подходит для большинства случаев.
К сожалению, это решение не так хорошо, как решение на VBA, потому что оно требует пересчет листа вручную (нажатием клавиши F9). По умолчанию Excel пересчитывает рабочий лист только после ввода новых данных или редактирования существующих, но не при изменении выделения. Итак, вы выделяете другую ячейку - ничего не происходит. Нажимаете F9 - лист обновляется, формула пересчитывается, а выделение обновляется.
Чтобы рабочий лист автоматически пересчитывался всякий раз, когда на экране появляется надпись SelectionChange происходит событие, вы можете поместить этот простой код VBA в модуль кода целевого листа, как объяснялось в предыдущем примере:
Private Sub Worksheet_SelectionChange( ByVal Target As Range) Target.Calculate End SubКод заставляет выбранный диапазон/ячейку пересчитываться, что, в свою очередь, заставляет функцию CELL обновляться, а условное форматирование - отражать изменения.
Преимущества В отличие от предыдущего метода, этот метод не влияет на существующее форматирование, которое вы применили вручную.
Недостатки : может ухудшить работу Excel.
- Чтобы условное форматирование работало, необходимо заставить Excel пересчитывать формулу при каждом изменении выделения (вручную с помощью клавиши F9 или автоматически с помощью VBA). Принудительный пересчет может замедлить работу Excel. Поскольку наш код пересчитывает выделение, а не весь лист, негативный эффект, скорее всего, будет заметен только на действительно больших и сложных рабочих книгах.
- Поскольку функция CELL доступна в Excel 2007 и выше, этот метод не будет работать в более ранних версиях.
Выделение выделенной строки и столбца с помощью условного форматирования и VBA
Если предыдущий метод значительно замедляет работу рабочей книги, можно подойти к задаче иначе - вместо того, чтобы пересчитывать рабочий лист при каждом перемещении пользователя, получите номер активной строки/столбца с помощью VBA, а затем подайте этот номер в функцию ROW() или COLUMN() с помощью формул условного форматирования.
Для этого необходимо выполнить следующие действия:
- Добавьте новый чистый лист в рабочую книгу и назовите его Лист помощника Единственная цель этого листа - хранить два числа, представляющие строку и столбец, содержащие выбранную ячейку, чтобы можно было безопасно скрыть лист позже.
- Вставьте приведенный ниже VBA в окно кода рабочего листа, на котором вы хотите реализовать выделение. Для получения подробных инструкций обратитесь к нашему первому примеру. Private Sub Worksheet_SelectionChange( ByVal Target As Range) Application.ScreenUpdating = False Worksheets("Helper Sheet" ).Cells(2, 1) = Target.Row Worksheets("Helper Sheet" ).Cells(2, 2) = Target.Column Application.ScreenUpdating= True End Sub
Приведенный выше код помещает координаты активной строки и столбца на лист с именем "Helper Sheet". Если в шаге 1 вы назвали свой лист по-другому, измените имя рабочего листа в коде соответствующим образом. Номер строки записывается в A2, а номер столбца - в B2.
- В целевом рабочем листе выделите весь набор данных и создайте правило условного форматирования с помощью приведенных ниже формул. Пошаговое руководство приведено в примере выше.
А теперь давайте подробно рассмотрим три основных варианта использования.
Как выделить активную строку
Чтобы выделить строку, в которой в данный момент находится курсор, настройте правило условного форматирования с помощью этой формулы:
=ROW()='Helper Sheet'!$A$2
В результате пользователь может четко видеть, какой ряд выбран в данный момент:
Как выделить активный столбец
Чтобы выделить выбранный столбец, подайте номер столбца в функцию COLUMN, используя эту формулу:
=COLUMN()='Helper Sheet'!$B$2
Теперь выделенная колонка позволяет комфортно и без усилий читать вертикальные данные, полностью сосредоточившись на них.
Как выделить активную строку и столбец
Чтобы выбранная строка и столбец автоматически затенялись одним и тем же цветом, объедините функции ROW() и COLUMN() в одну формулу:
=OR(ROW()='Helper Sheet'!$A$2, COLUMN()='Helper Sheet'!$B$2)
Соответствующие данные сразу же попадают в фокус внимания, что позволяет избежать их неправильного прочтения.
Преимущества : оптимизированная производительность; работает во всех версиях Excel
Недостатки : самая длинная установка
Вот как выделить столбец и строку выделенной ячейки в Excel. Я благодарю вас за прочтение и жду вас в нашем блоге на следующей неделе!
Рабочая тетрадь для тренировок для скачивания
Выделение активной строки и столбца (файл .xlsm)