Скриване/показване на ненужни редове и колони

Формулиране на проблема

Да предположим, че имаме такава маса, с която трябва да „танцуваме“ всеки ден:

 

На когото таблицата изглежда малка - мислено я умножете двадесет пъти по площ, като добавите още няколко блока и две дузини големи градове. 

Задачата е временно да премахнете от екрана редове и колони, които в момента не са необходими за работа, т.е. 

  • скрийте детайлите по месеци, оставяйки само тримесечия
  • скриване на суми по месеци и тримесечия, оставяйки само сумата за половин година
  • скриване на ненужни в момента градове (работя в Москва – защо да виждам Санкт Петербург?) и др.

В реалния живот има море от примери за такива таблици.

Метод 1: Скриване на редове и колони

Методът, честно казано, е примитивен и не много удобен, но две думи могат да се кажат за него. Всички предварително избрани редове или колони на лист могат да бъдат скрити, като щракнете с десния бутон върху заглавката на колоната или реда и изберете командата от контекстното меню Крия (Крия):

 

За обратно показване изберете съседни редове / колони и с десен бутон изберете от менюто, съответно показване (Покажи).

Проблемът е, че трябва да работите с всяка колона и ред поотделно, което е неудобно.

Метод 2. Групиране

Ако изберете няколко реда или колони и след това изберете от менюто Данни – Група и Структура – ​​Група (Данни — Група и Схема — Група), тогава те ще бъдат оградени в квадратна скоба (групирани). Освен това групите могат да бъдат вложени една в друга (разрешени са до 8 нива на влагане):

По-удобен и по-бърз начин е да използвате клавишна комбинация за групиране на предварително избрани редове или колони. Alt+Shift+стрелка надясно, и за разгрупиране Alt+Shift+стрелка наляво, Съответно.

Този метод за скриване на ненужни данни е много по-удобен – можете или да щракнете върху бутона с „+"Или"-“, или върху бутоните с числово ниво на групиране в горния ляв ъгъл на листа – тогава всички групи от желаното ниво ще бъдат свити или разширени наведнъж.

Така че, ако вашата таблица съдържа обобщени редове или колони с функция за сумиране на съседни клетки, тоест шанс (не е 100% вярно), че Excel той ще създаде всички необходими групи в таблицата с едно движение – през менюто Данни – Група и структура – ​​Създаване на структура (Данни — Групиране и контур — Създаване на контур). За съжаление, такава функция работи много непредсказуемо и понякога прави пълни глупости на сложни таблици. Но можете да опитате.

В Excel 2007 и по-нови всички тези радости са в раздела Дата (Дата) в група   структура (Очертание):

Метод 3. Скриване на маркирани редове/колони с макрос

Този метод е може би най-универсалният. Нека добавим празен ред и празна колона в началото на нашия лист и да маркираме с произволна икона тези редове и колони, които искаме да скрием:

Сега нека отворим редактора на Visual Basic (ALT + F11), вмъкнете нов празен модул в нашата книга (меню Вмъкване – Модул) и копирайте текста на два прости макроса там:

Sub Hide() Dim cell As Range Application.ScreenUpdating = False 'Деактивиране на актуализирането на екрана, за да се ускори За всяка клетка в ActiveSheet.UsedRange.Rows(1).Cells 'Итериране на всички клетки в първия ред If cell.Value = "x " След това клетка .EntireColumn.Hidden = True 'ако в клетка x - скрий колона Следваща за всяка клетка в ActiveSheet.UsedRange.Columns(1).Cells 'преминават през всички клетки на първата колона If cell.Value = "x" Тогава cell.EntireRow.Hidden = True 'ако в клетка x - скриване на реда Next Application.ScreenUpdating = True End Sub Sub Show() Columns.Hidden = False 'анулиране на всички скрити редове и колони Rows.Hidden = False End Sub Sub  

Както се досещате, макросът Крия крие и макроса Покажи – Показва обратно етикетирани редове и колони. Ако желаете, на макросите могат да бъдат присвоени бързи клавиши (Alt + F8 и бутон параметри), или създайте бутони директно върху листа, за да ги стартирате от раздела Програмист – Вмъкване – Бутон (Програмист — Вмъкване — Бутон).

Метод 4. Скриване на редове/колони с даден цвят

Да кажем, че в горния пример ние, напротив, искаме да скрием сумите, т.е. лилави и черни редове и жълти и зелени колони. Тогава нашият предишен макрос ще трябва да бъде леко модифициран чрез добавяне, вместо проверка за наличието на „x“, проверка за съответствие на цвета на запълване с произволно избрани примерни клетки:

Sub HideByColor() Dim cell As Range Application.ScreenUpdating = False За всяка клетка в ActiveSheet.UsedRange.Rows(2).Cells If cell.Interior.Color = Range("F2").Interior.Color Then cell.EntireColumn.Hidden = True If cell.Interior.Color = Range("K2").Interior.Color Then cell.EntireColumn.Hidden = True Next За всяка клетка в ActiveSheet.UsedRange.Columns(2).Cells If cell.Interior.Color = Range ("D6").Interior.Color Then cell.EntireRow.Hidden = True If cell.Interior.Color = Range("B11").Interior.Color Then cell.EntireRow.Hidden = True Next Application.ScreenUpdating = True End Sub  

Не трябва обаче да забравяме едно предупреждение: този макрос работи само ако клетките на изходната таблица са попълнени с цвят ръчно, а не с помощта на условно форматиране (това е ограничение на свойството Interior.Color). Така например, ако автоматично сте маркирали всички сделки във вашата таблица, където числото е по-малко от 10, като използвате условно форматиране:

Скриване/показване на ненужни редове и колони

... и искате да ги скриете с едно движение, тогава предишният макрос ще трябва да бъде „завършен“. Ако имате Excel 2010-2013, тогава можете да излезете, като използвате вместо свойството Интериор имот DisplayFormat.Interior, който извежда цвета на клетката, независимо как е зададен. След това макросът за скриване на сините линии може да изглежда така:

Sub HideByConditionalFormattingColor() Dim cell As Range Application.ScreenUpdating = False За всяка клетка в ActiveSheet.UsedRange.Columns(1).Cells If cell.DisplayFormat.Interior.Color = Range("G2").DisplayFormat.Interior.Color Тогава клетка .EntireRow.Hidden = True Next Application.ScreenUpdating = True End Sub  

Клетка G2 се взема като проба за цветово сравнение. За съжаление имотът DisplayFormat се появи в Excel едва от версията 2010, така че ако имате Excel 2007 или по-стар, ще трябва да измислите други начини.

  • Какво е макрос, къде да вмъкнете макро код, как да ги използвате
  • Автоматично групиране в многостепенни списъци

 

Оставете коментар