Съдържание
Понякога се налага да скрием някои конкретни редове, когато използваме голям набор от данни в Excel, за да подобрим четливостта. Макрос VBA е най-ефективният, най-бързият и най-сигурният метод за изпълнение на всякакви операции в Excel. В тази статия ще ви покажем как да скриване на редове в Excel въз основа на различни критерии с помощта на макроса VBA.
Изтегляне на работна тетрадка
Можете да изтеглите безплатната учебна тетрадка на Excel от тук.
Скриване на редове с VBA.xlsm
14 метода с VBA за скриване на редове в Excel
В този раздел ще разгледаме 12 различни метода с VBA към скриване на редове в Excel. Примерът, който ще използваме в цялата статия, е показан по-долу.
1. вграждане на VBA за скриване на единичен ред в Excel
Ако искате да скриване на един ред с VBA След това следвайте стъпките, описани по-долу. В нашия случай ще скриване на ред номер 5 ( Фамилия ) от нашия набор от данни.
Стъпки:
- Натиснете Alt + F11 на клавиатурата или отидете в раздела Разработчик -> Visual Basic да отворите Редактор на Visual Basic .
- В изскачащия прозорец с код, в лентата с менюта щракнете върху Вмъкване -> Модул .
- Копирайте следния код и го поставете в прозореца за код.
Sub HideSingleRow() Worksheets("Single").Range("5:5").EntireRow.Hidden = True End Sub
Вашият код вече е готов за изпълнение.
Тук,
- Работни листове("Single") = Задайте име на работния лист.
- Обхват("5:5") = Pass ред номер 5 вътре в Обхват метод.
- Натиснете F5 на клавиатурата или от лентата с менюта изберете Run -> Run Sub/UserForm Можете също така просто да щракнете върху малка икона Play в лентата с подменюта, за да стартирате макроса.
Забележете на изображението по-долу, ред номер 5 се скрива след изпълнението на VBA код.
Прочетете още: Формула за скриване на редове в Excel (7 метода)
2. Вмъкване на макрос за скриване на съседни редове в Excel
Научихте как да скриете един ред с VBA . Но да предположим, че искате да скриване на диапазон от редове които са съседни . Можете да го направите и с VBA в Excel. Ще скрий редове от 5 до 7 от нашия набор от данни, показан по-горе.
Стъпки:
- По същия начин, както преди, отворете Редактор на Visual Basic от Разработчик таб и Вмъкване на a Модул в прозореца с кода.
- В прозореца за код копирайте следния код и го поставете.
Sub HideContiguousRows() Worksheets("Contiguous").Range("5:7").EntireRow.Hidden = True End Sub
Вашият код вече е готов за изпълнение.
Тук,
- Работни листове("Съседни") = Задайте име на работния лист.
- Обхват("5:7") = Pass номер на реда от 5 до 7 вътре в Обхват метод.
- Изпълнявайте този код и вижте на следващата снимка, че редове от 5 до 7 сега са скрити.
Прочетете още: Как да скривате и премахвате редове в Excel (6 най-лесни начина)
3. вграждане на макрос за отделяне на несвързани редове
Този път ще научите как да скриване на редове в Excel, които са несвързани с VBA . С нашия набор от данни кодът за скрий редове 5, 6, 8 и 9 са дадени по-долу.
Стъпки:
- Както вече беше показано, отворените Редактор на Visual Basic от Разработчик таб и Вмъкване на a Модул в прозореца с кода.
- В прозореца за код копирайте следния код и го поставете.
Sub HideNonContiguousRows() Worksheets("Non-Contiguous").Range("5:6, 8:9").EntireRow.Hidden = True End Sub
Вашият код вече е готов за изпълнение.
Тук,
- Работни листове("Несъседни") = Задайте име на работния лист.
- Обхват("5:6, 8:9") = Pass ред номер 5 до 6 и 8 до 9 вътре в Обхват метод.
- Изпълнявайте тази част от кода и вижте, че редове 5 до 6 и 8 до 9 са скрити на следващата снимка.
Прочетете още: Как да скриете редове в Excel (6 ефективни метода)
4. Макрос за скриване на всички редове, съдържащи текстове в Excel
Ако искате да скриване на всички редове, които съдържат текст стойности, след което следвайте стъпките, посочени по-долу.
Стъпки:
- Отворете Редактор на Visual Basic от Разработчик таб и Вмъкване на a Модул в прозореца с кода.
- В прозореца за код копирайте следния код и го поставете.
Sub HideAllRowsContainsText() LastRow = 1000 'Нека предположим, че има 1000 реда в набора от данни For i = 1 To LastRow 'Преминаваме през всеки ред и проверяваме за необходимото условие 'За да скрием всички редове с текстови данни If IsNumeric(Range("C" & i)) = False Then Rows(i).EntireRow.Hidden = True Next End Sub
Вашият код вече е готов за изпълнение.
Тук,
- IsNumeric(Range("C" & i)) = Данните в нашия набор от данни започват от колона C, затова преминахме C вътре в Обхват метод.
- Изпълнявайте този код и ще забележите. всички редове които са съдържащ текст вече са скрити.
Прочетете още: Как да скриете няколко реда в Excel (9 метода)
5. Макрос за прикриване на всички редове, съдържащи числа, в Excel
И ако искате да скриете всички редове, които съдържат числови стойности с VBA След това следвайте стъпките, посочени по-долу.
Стъпки:
- Отвори Редактор на Visual Basic от Разработчик таб и Вмъкване на a Модул в прозореца с кода.
- В прозореца за код копирайте следния код и го поставете.
Sub HideAllRowsContainsNumbers() LastRow = 1000 'Нека предположим, че в набора от данни има 1000 реда For i = 4 To LastRow 'Преминаваме през всеки ред и проверяваме за необходимото условие 'Задаваме i = 4, защото нашите данни започват от ред 4 'За да скрием всички редове с цифрови данни If IsNumeric(Range("C" & i)) = True Then Rows(i).EntireRow.Hidden = True Next End Sub
Вашият код вече е готов за изпълнение.
Тук,
- IsNumeric(Range("C" & i)) = Данните в нашия набор от данни започват от колона C, затова преминахме C вътре в Обхват метод.
- Изпълнявайте този код и забележете, че всички редове които са съдържащи числови стойности сега са скрити.
Прочетете още: Скриване на дублиращи се редове въз основа на една колона в Excel (4 метода)
6. Макрос за скриване на редове, съдържащи нула (0) в Excel
Да предположим, че искате да скриете само редовете от определена колона, които са стопанство 0 (нула) Вижте следния набор от данни, в който Колона Е притежава 0 в ред 7 и 82 в ред 10 . Ще се научим как да да скриете само реда, в който се намира 0 ( ред 7 ) с VBA в Excel.
Стъпки:
- Отвори Редактор на Visual Basic от Разработчик таб и Вмъкване на a Модул в прозореца с кода.
- В прозореца за код копирайте следния код и го поставете.
Sub HideRowContainsZero() LastRow = 1000 'Нека предположим, че в набора от данни има 1000 реда For i = 4 To LastRow 'Преминаваме през всеки ред и проверяваме за необходимото условие 'Задаваме i = 4, защото нашите данни започват от ред 4 'За да скрием реда, съдържащ 0 в колона E If Range("E" & i) = 0 Then Rows(i).EntireRow.Hidden = True Next End Sub
Вашият код вече е готов за изпълнение.
- Изпълнявайте този код и забележете, че редът ( ред 7 ), които са съдържали 0 в колона E вече е скрита, докато ред 10 която носи 82 не е скрит.
Прочетете още: Как да скриете празните редове в Excel VBA (4 полезни метода)
7. прилагане на макрос за скриване на редове с отрицателни стойности в Excel
Точно както можете да скриете редове, които съдържат нули от една и съща колона, можете да скриване на редове, които съдържат отрицателни стойности С набора от данни, показан по-долу, където колона E съдържа както отрицателни, така и положителни стойности, ще видим кода, който скрива само отрицателната стойност.
Стъпки:
- Отворете Редактор на Visual Basic от Разработчик таб и Вмъкване на a Модул в прозореца с кода.
- В прозореца за код копирайте следния код и го поставете.
Sub HideRowContainsNegative() LastRow = 1000 'Нека предположим, че в набора от данни има 1000 реда For i = 4 To LastRow 'Преминаваме през всеки ред и проверяваме за необходимото условие 'Задаваме i = 4, защото нашите данни започват от ред 4 'За да скрием реда, съдържащ отрицателни стойности в колона E If IsNumeric(Range("E" & i)) = True Then If Range("E" & i) <0 ThenRows(i).EntireRow.Hidden = True End If Next End Sub
Вашият код вече е готов за изпълнение.
- Изпълнявайте този код и забележете, че ред 7 която съдържаше отрицателна стойност (-10) в колона E вече е скрита, докато ред 10 която носи 82 не е скрит.
8. вграждане на VBA за прикриване на редове, съдържащи положителни стойности в Excel
Този път с набора от данни, даден по-долу, където колона E съдържа и двете нулеви положителни стойности, ще видим VBA код, който скрива само положителния .
Стъпки:
- Отвори Редактор на Visual Basic от Разработчик таб и Вмъкване на a Модул в прозореца с кода.
- В прозореца за код копирайте следния код и го поставете.
Sub HideRowContainsPositive() LastRow = 1000 'Да предположим, че в набора от данни има 1000 реда For i = 4 To LastRow 'Преминаваме през всеки ред и проверяваме за необходимото условие 'Задаваме i = 4, защото нашите данни започват от ред 4 'За да скрием реда, съдържащ положителни стойности в колона E If IsNumeric(Range("E" & i)) = True Then If Range("E" & i)> 0 ThenRows(i).EntireRow.Hidden = True End If Next End Sub
Вашият код вече е готов за изпълнение.
- Изпълнявайте този код и забележете, че ред 7 която съдържаше положителна стойност (55) в колона E вече е скрита, докато ред 10 която носи 0 не е скрит.
Прочетете още: VBA за скриване на редове въз основа на стойността на клетката в Excel (14 примера)
9. Макрос за скриване на редове, които съдържат нечетни числа в Excel
Можете да скриване на редове с нечетни числа В примера, който показахме в началото на тази статия, колона E притежава както нечетни, така и четни числа в редове 7 и 10 . Ще научим кода на скриване на реда който притежава нечетни числа само.
Стъпки:
- Отворете Редактор на Visual Basic от Разработчик таб и Вмъкване на a Модул в прозореца с кода.
- В прозореца за код копирайте следния код и го поставете.
Sub HideRowContainsOdd() LastRow = 1000 'Нека предположим, че в набора от данни има 1000 реда For i = 4 To LastRow 'Преминаваме през всеки ред и проверяваме за необходимото условие 'Задаваме i = 4, защото нашите данни започват от ред 4 'За да скрием реда, съдържащ положителни стойности в колона E If IsNumeric(Range("E" & i)) = True Then If Range("E" & i) Mod 2 = 1 ThenRows(i).EntireRow.Hidden = True End If Next End Sub
Вашият код вече е готов за изпълнение.
- Изпълнявайте тази част от кода и вижте, че само ред 7 която съдържаше нечетен брой (55) в колона E вече е скрита, докато ред 10 която носи четно число (82) не е скрит.
10. VBA за скриване на редове, съдържащи четни числа в Excel
По същия начин можете да скриване на редове с четни числа В примера, който показахме в началото на тази статия, колона F притежава както нечетни, така и четни числа в редове 7 и 10 . Ще научим кода на скриване на реда който притежава четни числа само.
Стъпки:
- Отвори Редактор на Visual Basic от Разработчик таб и Вмъкване на a Модул в прозореца с кода.
- В прозореца за код копирайте следния код и го поставете.
Sub HideRowContainsEven() LastRow = 1000 'Нека предположим, че в набора от данни има 1000 реда For i = 4 To LastRow 'Преминаваме през всеки ред и проверяваме за необходимото условие 'Задаваме i = 4, защото нашите данни започват от ред 4 'За да скрием реда, съдържащ положителни стойности в колона F If IsNumeric(Range("F" & i)) = True Then If Range("F" & i) Mod 2 = 0 ThenRows(i).EntireRow.Hidden = True End If Next End Sub
Вашият код вече е готов за изпълнение.
- Изпълнявайте този код и вижте, че само ред 7 която съдържаше четно число (100) в колона F вече е скрита, докато ред 10 която носи нечетен брой (75) не е скрит.
Прочетете още: Excel VBA: скриване на всички редове в Excel (5 практически примера)
11. вмъкване на макропрограма за скриване на редове, които са по-големи от определено условие
Можете да скриване на редове, които са по-големи от определена стойност с VBA Excel. Да предположим, че искате да скриете редовете от колона E където стойността е повече от 80 Ето как да го направите:
Стъпки:
- Отворете Редактор на Visual Basic от Разработчик таб и Вмъкване на a Модул в прозореца с кода.
- В прозореца за код копирайте следния код и го поставете.
Sub HideRowContainsGreater() LastRow = 1000 'Да предположим, че в набора от данни има 1000 реда For i = 4 To LastRow 'Преминаваме през всеки ред и проверяваме за необходимото условие 'Задаваме i = 4, защото нашите данни започват от ред 4 'За да скрием реда, съдържащ положителни стойности в колона E If IsNumeric(Range("E" & i)) = True Then If Range("E" & i)> 80 ThenRows(i).EntireRow.Hidden = True End If Next End Sub
Вашият код вече е готов за изпълнение.
- Изпълнявайте този код и вижте, че само ред 10 която съдържаше 82 (което е по-голямо от 80) в колона E вече е скрита, докато ред 7 която носи 55 не е скрит.
Прочетете още: Скриване на редове въз основа на стойността на клетката с условно форматиране в Excel
12. вграждане на макрос за покриване на редове, които са по-малки от определено условие в Excel
Можете също така да скриване на редове, които са по-малки от определена стойност с VBA Excel. Да предположим, че искате да скриете редовете от колона E където стойността е по-малко от 80 Ето как да го направите:
Стъпки:
- Отворете Редактор на Visual Basic от Разработчик таб и Вмъкване на a Модул в прозореца с кода.
- В прозореца за код копирайте следния код и го поставете.
Sub HideRowContainsLess() LastRow = 1000 'Нека предположим, че в набора от данни има 1000 реда For i = 4 To LastRow 'Преминаваме през всеки ред и проверяваме за необходимото условие 'Задаваме i = 4, защото нашите данни започват от ред 4 'За да скрием реда, съдържащ положителни стойности в колона E If IsNumeric(Range("E" & i)) = True Then If Range("E" & i) <80 ThenRows(i).EntireRow.Hidden = True End If Next End Sub
Вашият код вече е готов за изпълнение.
- Изпълнявайте този код и вижте, че само ред 7 която съдържаше 55 (което е по-малко от 80) в колона E вече е скрита, докато ред 10 който е пренасяне на 82 не е скрит.
13. Скриване на редове въз основа на стойността на текста на клетката с макрос
Да предположим, че искате да скриване на ред, който съдържа определен текст В нашия случай ще ви дадем пример с реда, който съдържа думата " Химия ", ред 6 и ще ви предоставим кода за скриване на този ред.
Стъпки:
- Отворете Редактор на Visual Basic от Разработчик таб и Вмъкване на a Модул в прозореца с кода.
- В прозореца за код копирайте следния код и го поставете.
Sub HideRowCellTextValue() StartRow = 4 LastRow = 10 iCol = 4 For i = StartRow To LastRow If Cells(i, iCol).Value "Chemistry" Then Cells(i, iCol).EntireRow.Hidden = False Else Cells(i, iCol).EntireRow.Hidden = True End If Next i End Sub
Вашият код вече е готов за изпълнение.
Тук,
- StartRow = 4 -> Първи ред на набора от данни.
- LastRow = 10 -> Последен ред на набора от данни.
- iCol = 4 -> адрес на колоната че съдържа текста стойност.
- Изпълнявайте този код и забележете, че ред номер 6 която се състои от думата " Химия " е скрит.
14. Макрос за скриване на редове въз основа на цифровата стойност на клетката в Excel
По-рано видяхте как да скриете ред въз основа на стойността на текста в клетката, а този път ще научите как да направите това, когато стойността е числова В нашия случай ще ви дадем пример с реда, който съдържа цифровата стойност " 87 ", ред 7 и ще ви предоставим кода за скриване на този ред.
Стъпки:
- Отворете Редактор на Visual Basic от Разработчик таб и Вмъкване на a Модул в прозореца с кода.
- В прозореца за код копирайте следния код и го поставете.
Sub HideRowCellNumValue() StartRow = 4 LastRow = 10 iCol = 4 For i = StartRow To LastRow If Cells(i, iCol).Value "87" Then Cells(i, iCol).EntireRow.Hidden = False Else Cells(i, iCol).EntireRow.Hidden = True End If Next i End Sub
Вашият код вече е готов за изпълнение.
Тук,
- StartRow = 4 -> Първи ред на набора от данни.
- LastRow = 10 -> Последен ред на набора от данни.
- iCol = 4 -> адрес на колоната че съдържа текста стойност.
- Изпълнявайте този код и забележете, че ред номер 7 която се състои от цифровата стойност " 87 " е скрит.
Прочетете още: Как да скриете редове въз основа на стойността на клетката в Excel (5 метода)
Заключение
Тази статия ви показва как да скриване на редове в Excel с VBA . надявам се, че тази статия е била много полезна за вас. Не се колебайте да питате, ако имате някакви въпроси по темата.