Как в excel выделить строку при выделении ячейки

Координатное выделение

У вас большой монитор, но таблицы, с которыми вы работаете — еще больше. И, пробегая взглядом по экрану в поисках нужной информации, всегда есть шанс «соскользнуть» взглядом на соседнюю строчку и посмотреть не туда. Я даже знаю людей, который для таких случаев постоянно держат недалеко от себя деревянную линейку, чтобы приложить ее к строке на мониторе. Технологии будущего! 

А если при движении активной ячейки по листу будет подсвечиваться текущая строка и столбец? Своего рода координатное выделение примерно такого вида:

coord_selection1.gif

Поудобнее, чем линейка, правда?

Есть несколько способов разной сложности, чтобы реализовать такое. Каждый способ — со своими плюсами и минусами. Давайте разберем их детально.

Способ 1. Очевидный. Макрос, выделяющий текущую строку и столбец

Самый очевидный путь для решения нашей проблемы «в лоб» — нам нужен макрос, который будет отслеживать изменение выделения на листе и выделять целую строку и столбец для текущей ячейки. Также желательно иметь возможность при необходимости включать и отключать эту функцию, чтобы такое крестообразное выделение не мешало нам вводить, например, формулы, а работало только тогда, когда мы просматриваем список в поисках нужной информации. Это приводит нас к трем макросам (выделения, включения и выключения), которые нужно будет добавить в модуль листа.

Откройте лист со таблицей, в которой хотите получить такое координатное выделение. Щелкните правой кнопкой мыши по ярлычку листа и выберите в контекстном меню команду Исходный текст (Source Code). Должно открыться окно редактора Visual Basic. Скопируйте в него этот текст этих трех макросов:

Dim Coord_Selection As Boolean   'глобальная переменная для вкл/выкл выделения

Sub Selection_On()   'макрос включения выделения
    Coord_Selection = True
End Sub

Sub Selection_Off()  'макрос выключения выделения
    Coord_Selection = False
End Sub

'основная процедура, выполняющая выделение
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim WorkRange As Range

    If Target.Cells.Count > 1 Then Exit Sub  'если выделено больше 1 ячейки - выходим
    If Coord_Selection = False Then Exit Sub    'если выделение выключено - выходим

    Application.ScreenUpdating = False
    Set WorkRange = Range("A6:N300")    'адрес рабочего диапазона, в пределах которого видно выделение
    Intersect(WorkRange, Union(Target.EntireColumn, Target.EntireRow)).Select   'формируем крестообразный диапазон и выделяем
    Target.Activate   
End Sub

Измените адрес рабочего диапазона на свой — именно в пределах этого диапазона и будет работать наше выделение. Затем закройте редактор Visual Basic и вернитесь в Excel.

Нажмите сочетание клавиш ALT+F8, чтобы открыть окно со списком доступных макросов. Макрос Selection_On, как нетрудно догадаться, включает координатное выделение на текущем листе, а макрос Selection_Off — выключает его. В этом же окне, нажав кнопку Параметры (Options) можно назначить этим макросам сочетания клавиш для удобного запуска.

Плюсы этого способа:

  • относительная простота реализации
  • выделение — операция безобидная и никак не изменяет содержимое или форматирование ячеек листа, все остается как есть

Минусы этого способа:

  • такое выделение некорректно работает в том случае, если на листе есть объединенные ячейки — выделяются сразу все строки и столбцы, входящие в объединение
  • если случайно нажать клавишу Delete, то очистится не только активная ячейка, а вся выделенная область, т.е. удалятся данные из всей строки и столбца

Способ 2. Оригинальный. Функция ЯЧЕЙКА + Условное форматирование

Этот способ хотя и имеет пару недостатков, мне представляется весьма изящным. Реализовать что-либо, используя только встроенные средства Excel, минимально влезая в программирование на VBA — высший пилотаж ;)

Способ основан на использовании функции ЯЧЕЙКА (CELL), которая может выдавать массу различной информации по заданной ячейке — высоту, ширину, номер строки-столбца, числовой формат и т.д.. Эта функция имеет два аргумента:

  • кодовое слово для параметра, например «столбец» или «строка»
  • адрес ячейки, для которой мы хотим определить значение этого параметра

Хитрость в том, что второй аргумент не является обязательным. Если он не указан, то берется текущая активная ячейка.

Вторая составляющая этого способа — условное форматирование. Эта крайне полезная функция Excel позволяет автоматически форматировать ячейки, если они удовлетворяют заданным условиям. Если соединить эти две идеи в одно целое, то получим следующий алгоритм реализации нашего координатного выделения через условное форматирование:

  1. Выделяем нашу таблицу, т.е. те ячейки, в которых в будущем должно отображаться координатное выделение.
  2. В Excel 2003 и более старших версиях открываем меню Формат — Условное форматирование — Формула (Format — Conditional Formatting — Formula). В Excel 2007 и новее — жмем на вкладке Главная (Home) кнопку Условное форматирование — Создать правило (Conditional Formatting — Create Rule) и выбираем тип правила Использовать формулу для определения форматируемых ячеек (Use formula)
  3. Вводим формулу для нашего координатного выделения:

    =ИЛИ(ЯЧЕЙКА(«строка»)=СТРОКА(A2);ЯЧЕЙКА(«столбец»)=СТОЛБЕЦ(A2))

    =OR(CELL(«row»)=ROW(A1),CELL(«column»)=COLUMN(A1))
    coord_selection2.gif
    Эта формула проверяет, не совпадает ли номер столбца каждой ячейки в таблице с номером столбца текущей ячейки. Аналогично со столбцами. Таким образом закрашенными окажутся только те ячейки, у которых либо номер столбца, либо номер строки совпадает с текущей ячейкой. А это и есть крестообразное координатное выделение, которого мы хотим добиться.

  4. Нажмите кнопку Формат (Format) и задайте цвет заливки.

Все почти готово, но остался один нюанс. Дело в том, что Excel не считает изменение выделения изменением данных на листе. И, как следствие, не запускает пересчет формул и перекраску условного форматирования только при изменении положения активной ячейки. Поэтому добавим в модуль листа простой макрос, который будет это делать. Щелкните правой кнопкой мыши по ярлычку листа и выберите в контекстном меню команду Исходный текст (Source Code). Должно открыться окно редактора Visual Basic. Скопируйте в него этот текст этого простого макроса:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    ActiveCell.Calculate
End Sub

Теперь при изменении выделения будет запускаться процесс пересчета формулы с функцией ЯЧЕЙКА в условном форматировании и заливаться текущая строка и столбец.

Плюсы этого способа:

  • Условное форматирование не нарушает пользовательское форматирование таблицы
  • Этот вариант выделения корректно работает с объединенными ячейками.
  • Нет риска удалить целую строку и столбец с данными при случайном нажатии Delete.
  • Макросы используются минимально

Минусы этого способа:

  • Формулу для условного форматирования надо вводить вручную.
  • Нет быстрого способа включить-выключить такое форматирование — оно включено всегда, пока не будет удалено правило.

Способ 3. Оптимальный. Условное форматирование + макросы

Золотая середина. Используем механизм отслеживания выделения на листе при помощи макросов из способа-1 и добавим к нему безопасное выделение цветом с помощью условного форматирования из способа-2.

Откройте лист со таблицей, в которой хотите получить такое координатное выделение. Щелкните правой кнопкой мыши по ярлычку листа и выберите в контекстном меню команду Исходный текст (Source Code). Должно открыться окно редактора Visual Basic. Скопируйте в него этот текст этих трех макросов:

Dim Coord_Selection As Boolean

Sub Selection_On()
    Coord_Selection = True
End Sub

Sub Selection_Off()
    Coord_Selection = False
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim WorkRange As Range, CrossRange As Range
    Set WorkRange = Range("A7:N300")    'адрес рабочего диапазона с таблицей
    If Target.Count > 1 Then Exit Sub
    If Coord_Selection = False Then
        WorkRange.FormatConditions.Delete
        Exit Sub
    End If
    Application.ScreenUpdating = False
    If Not Intersect(Target, WorkRange) Is Nothing Then
        Set CrossRange = Intersect(WorkRange, Union(Target.EntireRow, Target.EntireColumn))
        WorkRange.FormatConditions.Delete
        CrossRange.FormatConditions.Add Type:=xlExpression, Formula1:="=1"
        CrossRange.FormatConditions(1).Interior.ColorIndex = 33
        Target.FormatConditions.Delete
    End If
End Sub

Не забудьте изменить адрес рабочего диапазона на адрес своей таблицы. Закройте редактор Visual Basic и вернитесь в Excel. Чтобы использовать добавленные макросы, нажмите сочетание клавиш ALT+F8  и действуйте аналогично способу 1. 

Способ 4. Красивый. Надстройка FollowCellPointer

Excel MVP Jan Karel Pieterse родом из Нидерландов раздает у себя на сайте бесплатную надстройку FollowCellPointer(36Кб), которая решает ту же задачу, отрисовывая с помощью макросов графические линии-стрелки для подсветки текущей строки и столбца:

coord_selection3.gif

Красивое решение. Не без глюков местами, но попробовать точно стоит. Качаем архив, распаковываем на диск и устанавливаем надстройку:

  • в Excel 2003 и старше — через меню Сервис — Надстройки — Обзор (Tools — Add-Ins — Browse)
  • в Excel 2007 и новее — через Файл — Параметры — Надстройки — Перейти — Обзор (File — Excel Options — Add-Ins — Go to — Browse)

Ссылки по теме

  • Что такое макросы, куда вставлять код макроса на Visual Basic

На чтение 4 мин Просмотров 198 Опубликовано 14.03.2022

Итак, мне часто задают вопрос: «Как сделать так, чтобы при выделении одной ячейки, подсвечивались еще строка и столбец, в которых находится эта ячейка».

Из-за этого я решил написать отдельную статью. Это поможет моим читателям экономить время.

Чего мы хотим добиться? Ответ на анимированном изображении ниже.

Как мы видим, при выделении одной ячейки, столбец и строка также подсвечиваются. Это очень удобно и помогает ориентироваться в данных, особенно когда вы работаете с большими таблицами. Взгляд будет всегда сфокусирован и не будет проблем с определением, например, столбца, в котором находится наша ячейка.

Итак, начнем!

Подсветка строки и столбца при выделении ячейки в Excel

Как это сделать (пошаговая инструкция):

  • Щелкните на «Главная»;
  • Выберите функцию «Условное форматирование» и щелкните «Создать правило…»;
  • В открывшемся окошке, из списка, выберите «Использовать формулу для определения форматируемых ячеек»;
  • Укажите следующую формулу: =ИЛИ(ЯЧЕЙКА(«col»)=СТОЛБЕЦ();ЯЧЕЙКА(«row»)=СТРОКА())
  • Щелкните на «Формат» и установите подходящий для вас цвет и так далее;
  • Подтвердите.

Итак, строка и столбец, в которых находится выделенная ячейка, должны подсвечиваться одним и тем же цветом.

Но это еще не конец. Теперь нам необходимо вставить небольшой код в VB.

Вот он:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Application.CutCopyMode = False Then
Application.Calculate
End If
End Sub

Ниже, я продемонстрирую вам, как поместить это в VB, чтобы все заработало.

Что, собственно, делает этот код? Он запускает функцию, которая делает выделение, каждый раз, когда вы выделяете новую ячейку. Сама по себе эта функция запускается только когда в таблице происходит изменение (значения какой-либо ячейки, например). А для нас это не очень хороший вариант.

Кроме этого, функция «IF» в коде проверяет, пытается ли пользователь что-то вставить в документ и если да, то останавливает условное форматирование, чтобы не возникало проблем.

Как правильно вставить код в Visual Basic:

  • Щелкните на «Разработчик»;

  • Запустите «Visual Basic»;

  • В открывшемся окне Visual Basic, слева вы видите «дерево» вашего файла Excel. Если, вдруг, вы ничего не видите, нажмите CTRL + R;

  • Щелкните левой кнопкой мышки два раза по названию вашей таблицы;
  • Вставьте данный выше код в открывшееся окно. В случае если у вас несколько листов в файле, вам потребуется сделать это для каждого листа отдельно (открыть каждый лист в VB и вставить туда наш код);

  • Щелкните на красный крест справа вверху;

Не забывайте, из-за того, что в этом файле вы будете использовать Visual Basic, вам нужно сохранить файл с соответствующим расширением.

А еще, помните ранее я сказал вам, что строка и столбец будут выделены одним цветом? Так вот, если вы все-таки хотите, чтобы они выделялись разными цветами, вот аргументы для формулы:

  • =СТОЛБЕЦ()=ЯЧЕЙКА(«col»)
  • =ЯЧЕЙКА(«row»)=СТРОКА()

Из-за того, что это две отдельные формулы, вы можете в функции «Формат» указать разные цвета и так далее.

Важная информация:

  1. Не переживайте, все то, что мы рассмотрели, не повлияет на ручное выделение, например, ячеек (разными цветами и т.д.).
  2. Функция «Условное форматирование» довольно ресурсозатратная штука, не забывайте об этом. Если у вас, к примеру, старенький ноутбук, из-за этой функции, при работе с большими объемами данных Excel может «тормозить».
  3. Как я сказал ранее, код который мы вставили в Visual Basic активирует «Условное форматирование» каждый раз, когда вы выделяете новую ячейку.

Когда приходится работать с большим объемом данных в Excel, где строки сильно растянуты и не умещаются в один экран, сложно сравнить значения в одной и той же строке. Постоянно приходится передвигать горизонтальную полосу прокрутки. Работа была бы более удобной если бы целая активная строка была бы выделена цветом – как курсор на целую строку. Чтобы выделить активную строку или столбец цветом, создадим свою функцию в Excel с помощью макроса и с комбинируем ее с условным форматированием.

Подсветка строки в Excel цветом

Чтобы создать свой широкий курсов на целую строку в Excel, необходимо создать макрос и использовать его вместе с условным форматированием. Для примера создадим таблицу с широкими строками и большим количеством столбцов. Нам нужно выделить строку цветом по условию Excel. Например, если активная ячейка находится в строке 2, тогда выделить цветом всю строку 2 (в пределах таблицы или на весь лист). Для примера создадим таблицу с широкими строками и большим количеством столбцов:

Исходная таблица.

Подсветка текущей строки в Excel цветом:

  1. Откройте редактор VBA для этого выберите инструмент: «РАЗРАБОТЧИК»-«Код»-«Visual Basic». Или нажмите комбинацию горячих клавиш ALT+F11.
  2. В правом окне к активному проекту добавьте новый модуль. Для того в редакторе VBA выберите опцию: «Insert»-«Module»
  3. В окне модуля вставьте этот VBA-код макроса:
  4. VBA-код макроса.

  5. Не закрывая окно VBA-редактора перейдите на рабочий лист с исходной таблицей. Выделите целую вторую строку таблицы A2:H2 и выберите инструмент: «ГЛАВНАЯ»-«Условное форматирование»-«Создать правило»-«Использовать формулу для определения форматированных ячеек:».
  6. Использовать формулу.

  7. В полю ввода введите формулу:
  8. АктивнаяСтрока.

  9. Щелкните по кнопке «Формат» и на вкладке «Заливка» укажите зеленый цвет. На всех окнах жмем ОК.
  10. Формат.

  11. Скопируйте вторую строку таблицы.
  12. Копируем вторую строку.

  13. Выделите остальные строки и выберите инструмент: «ГЛАВНАЯ»-«Вставить»-«Специальная вставка»-«Форматы» (или нажмите комбинацию клавиш CTRL+ALT+V, потом отметить форматы и нажать ОК). Или воспользуйтесь инструментом: «ГЛАВНАЯ»-«Буфер обмена»-«Формат по образцу».
  14. Специальная вставка.

  15. Вернитесь к редактору VBA и в окне «Project» дважды щелкните по «Лист1». В появившемся окне вставьте следующий VBA-код макроса:
  16. Project.

  17. Сохраните и закройте редактор VBA.

Широкий курсор.

В результате происходит выделение строки условным форматированием только там, где находится активная ячейка. Эффект широкого курсора таблицы для комфортного просмотра данных с большим объемом информации. Сделав активной любую ячейку таблицы и сразу же выделяется цветом строка в которой находится данная ячейка.



Полезный вопрос! А как же выделить активный столбец цветом? Аналогичным методом реализовывается с помощью макроса не только подсветка цветом активной строки, но и столбца. Для этого:

  1. В модуль где находится код подсветки строки VBA-макроса, добавим код новой функции АктивныйСтолбец:
  2. Код VBA.

  3. Добавим новое правило в условном форматировании для нашей таблицы в диапазоне A1:A7. Теперь в новом правиле пишем функцию АктивныйСтолбец(), а вместо функции СТРОКА – СТОЛБЕЦ. И указываем синий цвет форматирования заливки ячейки.
  4. АктивныйСтолбец.

  5. Проверим все созданные правила для таблицы. Перейдите в ячейку A2 и ввыберите инструмент: «ГЛАВНАЯ»-«Условное форматирование»-«Управление правилами». Диспетчер правил условного форматирования должен выглядеть так:
  6. Диспетчер правил.

  7. Скопируйте формат столбца A1:A7 в остальные столбцы таблицы диапазона B1:H7. Например, с помощью инструмента: «ГЛАВНАЯ»-«Буфер обмена»-«Формат по образцу».
  8. Формат по образцу.

  9. Результат превышает ожидания. Идеальный курсор для просмотра огромных таблиц с большим количеством данных на множестве строк и столбцов:

Крестообразный курсор.

Принцип действия создания пользовательского курсора для таблицы

Применяемая в условном форматировании созданная нами функция VBA =АктивнаяСтрока() позволяет нам получить номер текущей строки в которой стала активной любая из ее ячеек. Результат вычисления пользовательской функции =АктивнаяСтрока() сравнивается с результатом функции =СТРОКА(), которая также возвращает номер текущей строки в данном моменте вычисления условного форматирования.

Скачать пример выделения активной строки и столбца цветом

Так как обе функции выполняются при активной ячейке в одной и той же строке их значения равны между собой и возвращают общее логическое значение ИСТИНА. В результате чего происходит выделение строки цветом по условию. Если значение ИСТИНА, тогда присваивается формат цвета для целой активной строки таблицы.

Главная » Мои надстройки »

Выделение строки и столбца при выделении ячейки

21 Ноябрь 2015              43184 просмотров

Долго держал в закромах эту надстройку — она долгое время была частью моей старой надстройки MyAddin (которая впоследствии переросла в MulTEx) — Координатное выделение строки и столбца


Надстройка пригодится тем, кто часто работает с большими таблицами, просматривая их и сопоставляя данные в строках и столбцах. Что дает эта надстройка? Она выделяет столбец и строку таблицы на пересечении выделенной ячейки, благодаря чему можно просмотреть все данные в столбце и строке активной ячейки, не перепроверяя себя лишний раз – «А в том ли столбце я смотрю данные?».
Пример применения


Надстройка рассчитана на пользователей Excel версий 2007 и выше. После подключения или открытия надстройки на панели появится новая вкладка: Excel-vba.ru с единственной кнопкой, по нажатии на которую появится форма:
Координатное выделение

Метод — выбор метода подсветки строки и столбца, их два:

  • выделение — строка и столбец выделяются так же, как если бы вы выделяли ячейки мышкой. У этого метода есть один недостаток. Если на листе в этом режиме будут сделаны изменения(удаление значения ячейки), то отменить их будет невозможно
  • условное форматирование — строка и столбец выделяются при помощи условного форматирования. Можно выбрать один из шести цветов для подсветки выделения строки и столбца. У такого подхода тоже есть недостаток. Все условное форматирование, примененное к текущему листу ранее, будет удалено

Весь лист — выделяются строка и столбец всего листа.

Вся таблица данных — выделяются строка и столбец только в пределах используемого диапазона данных.

Выбранный диапазон — выделяются строка и столбец только в пределах указанного вами диапазона. Особенность: не допускается выделение несвязанных диапазонов.

Область применения — выбирается область листа, к которой применяется координатное выделение:

  • только строка — выделяется только строка активной ячейки
  • только столбец — выделяется только столбец активной ячейки
  • строка и столбец — выделяется строка и столбец на пересечении активной ячейки

Отменить Координатное выделение — отменяет примененное координатное выделение.

Внимание! Координатное выделение действует во всех открытых книгах во всех листах до тех пор, пока вы не отключите его через пункт «Отменить координатное выделение».

Важно! При примененном координатном выделении невозможно скопировать выделенный диапазон, однако можно удалить значение активной ячейки (будет удалено только значение одной ячейки, расположенной на пересечении строки и столбца).


Скачать надстройку:

  ExcelVBA_KoordSel.zip (49,5 KiB, 5 623 скачиваний)

В архиве расположен файл надстройки. Прежде чем установить надстройку, необходимо её распаковать из архива на жесткий диск, после чего установить. Как установить надстройку: Установка надстроек

Надстройка распространяется бесплатно и с открытыми исходными кодами — смотрите, изучайте, меняйте под себя.
Самый важный момент для тех, кого не устроит цвет выделения по умолчанию: чтобы изменить цвет выделения ячеек через условное форматирование, необходимо перейти в модуль 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.


Статья помогла? Сделай твит, поделись ссылкой с друзьями!

можно ли в excel выделить строчку целиком нажатием на ячейку

Антон

Дата: Пятница, 05.12.2014, 15:51 |
Сообщение № 1

День добрый.
Можно ли в excel выделить строчку целиком нажатием на любую ячейку?

 

Ответить

nilem

Дата: Пятница, 05.12.2014, 15:54 |
Сообщение № 2

Группа: Авторы

Ранг: Старожил

Сообщений: 1612


Репутация:

563

±

Замечаний:
0% ±


Excel 2013, 2016

можно
[vba]

Код

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
Rows(Target.Row).Select
End Sub

[/vba]


Яндекс.Деньги 4100159601573

 

Ответить

buchlotnik

Дата: Пятница, 05.12.2014, 15:57 |
Сообщение № 3

Группа: Заблокированные

Ранг: Участник клуба

Сообщений: 3442


Репутация:

929

±

Замечаний:
20% ±


2010, 2013, 2016 RUS / ENG

shift + пробел — выделяет строку активной ячейки (ячеек если выделено несколько)

 

Ответить

Саня

Дата: Пятница, 05.12.2014, 16:03 |
Сообщение № 4

Группа: Друзья

Ранг: Ветеран

Сообщений: 1067


Репутация:

560

±

Замечаний:
0% ±


XL 2016

5 копеек:
[vba]

Код

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      With Target
          If .Count = 1 Then
              Application.EnableEvents = False
              .EntireRow.Select
              .Activate
              Application.EnableEvents = True
          End If
      End With
End Sub

[/vba]

код вставляется в модуль:
ПКМ по ярлыку листа — «Исходный текст»

 

Ответить

Антон

Дата: Пятница, 05.12.2014, 16:08 |
Сообщение № 5

За shift + пробел отдельное спасибо, буду пользоваться
Так как я вообще не силен в excel
подскажите куда этот код писать )
заранее благодарен

 

Ответить

Антон

Дата: Понедельник, 08.12.2014, 11:52 |
Сообщение № 6

Спасибо)
Все получилось

 

Ответить

Понравилась статья? Поделить с друзьями:
  • Как в excel выделить строку по слову
  • Как в excel выделить строку жирным
  • Как в excel выделить строки через одну строку
  • Как в excel выделить строки через одну в excel
  • Как в excel выделить строки с определенным цветом