Съдържание
В този урок ще научите 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Персонализиране на кода
Ако искате да персонализирате кода за своите нужди, тези малки съвети могат да ви бъдат полезни:
- Нашият примерен код използва два различни цвята, показани в горния gif - цветови индекс 38 за ред и 24 за колона. промяна на цвета на подсветката , просто ги заменете с кодове 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()
За да подчертаете активна колона :
=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 Край на Sub
Горният код поставя координатите на активния ред и колона в листа с име "Helper Sheet" (Помощен лист). Ако сте нарекли листа си по различен начин в стъпка 1, променете съответно името на работния лист в кода. Номерът на реда се записва в A2, а номерът на колоната - в B2.
- В целевия работен лист изберете цялата съвкупност от данни и създайте правило за условно форматиране с формулите по-долу. Ръководството стъпка по стъпка е представено в горния пример.
А сега нека разгледаме подробно трите основни случая на употреба.
Как да подчертаете активния ред
За да маркирате реда, в който се намира курсорът ви в момента, създайте правило за условно форматиране с тази формула:
=ROW()="Помощен лист"!$A$2
В резултат на това потребителят може ясно да види кой ред е избран в момента:
Как да подчертаете активната колона
За да маркирате избраната колона, подайте номера на колоната към функцията COLUMN, като използвате тази формула:
=COLUMN()="Помощен лист"!$B$2
Сега подчертаната колона ви позволява удобно и безпроблемно да четете вертикални данни, като се фокусирате изцяло върху тях.
Как да маркирате активния ред и колона
За да получите автоматично засенчване на избрания ред и колона в един и същи цвят, комбинирайте функциите ROW() и COLUMN() в една формула:
=OR(ROW()="Помощен лист"!$A$2, COLUMN()="Помощен лист"!$B$2)
Съответните данни се извеждат веднага на преден план, за да избегнете погрешното им прочитане.
Предимства : оптимизирана производителност; работи във всички версии на Excel
Недостатъци : най-дългата настройка
Ето как да маркирате колоната и реда на избрана клетка в Excel. Благодаря ви, че прочетохте, и с нетърпение очаквам да ви видя в нашия блог следващата седмица!
Практическа работна тетрадка за изтегляне
Подчертаване на активен ред и колона (.xlsm файл)