Макрос для выделения ячеек Excel по условию больше меньше
В таблице отчета необходимо выделить те ячейки, которые содержат процентные значения показателей по отделам на уровне 100% или больше. Для решения данной задачи можно использовать условное форматирования. Но лучше написать свой макрос, который возможно будет хорошим началом для многофункциональной программы. Ведь с помощью макроса мы получим доступ к значениям интересующих нас ячеек, с которыми потом можно будет выполнять различные вычислительные операции и т.п. Такой возможности условное форматирование не предоставляет.
Как выделить ячейки макросом по условию больше или равно
Исходная таблица отчета выглядит следующим образом:
Откройте редактор Visual Basic (ALT+F11) и вставьте новый модуль используя инструмент: «Вставка»-«Модуль». А после чего введите в него следующий код макроса:
Sub BolsheRavno()
Dim i As Long
Dim znach As Variant
Dim diapaz1 As Range
Dim diapaz2 As Range
znach = InputBox("Введите минимальное число для выделения ячеек")
If znach = "" Then Exit Sub
If IsNumeric(znach) Then
znach = znach * 1
Else
MsgBox "Допустимо вводить только числовые значения!"
Exit Sub
End If
Set diapaz1 = Application.Intersect(Selection, ActiveSheet.UsedRange)
If diapaz1 Is Nothing Then
MsgBox "Сначала выделите диапазон!"
Exit Sub
Else
For i = 1 To diapaz1.Count
If diapaz1(i) >= znach And IsNumeric(diapaz1(i)) _
And Not IsEmpty(diapaz1(i)) Then
If diapaz2 Is Nothing Then
Set diapaz2 = diapaz1(i)
Else
Set diapaz2 = Application.Union(diapaz2, diapaz1(i))
End If
End If
Next
End If
If diapaz2 Is Nothing Then
MsgBox "Ненайдено ниодной ячейки!"
Else
diapaz2.Select
MsgBox "Найдено: " & diapaz2.Count & " ячеек!"
End If
End Sub
Теперь, если мы хотим автоматически выделить несмежный диапазон ячеек, которые содержат в своем значении 100% или больше, выделите диапазон B2:F10. А потом выберите инструмент: «РАЗРАБОТЧИК»-«Код»-«Макросы»-«BolsheRavno»-«Выполнить». В результате чего появиться диалоговое окно интерфейса нашего макроса.
В поле ввода введите числове значение 1 и нажмите на кнопку ОК:
Макрос выделит все ячейки в предварительно выделенном диапазоне данных таблицы, значения которых находиться на уровне 100% или больше. После выполнения кода макроса можно изменить вон выделенных ячеек выбрав инструмент: «ГЛАВНАЯ»-«Шрифт»-«Цвет заливки».
Заполняя поле ввода диалогового окна макроса следует учитывать, что исходное вводимое значение должно быть числом. А если нас интересуют другие значения кроме 100% тогда следует учитывать формат ячеек. Например, для 50% следует вводить 0,5. Все должно быть в соответствии с форматом отображения чисел в ячейках.
В данном VBA-коде выполняется 5 проверок для инструкций алгоритма и введенного значения в диалоговое окно интерфейса макроса:
- Не является ли введенное значение пустым?
- Является ли числом введенное значение? Если же нет, сразу будет отображена информация о том, что введенное значение не является числовыми, а с помощью инструкции Exit Sub прекращается выполнение кода. В результате дальнейшие инструкции макроса не будут выполнены.
- Выделен ли необходимый исходный диапазон ячеек внутри таблицы перед запуском макроса?
- Равно или больше значение текущей ячейки по отношению к значению в переменной znach?
- Найдены ли ячейки со значениями соответствующие критериям поиска и сколько их?
If znach = "" Then Exit Sub
If IsNumeric(znach) Then
If diapaz1 Is Nothing Then
If diapaz1(i) >= znach
If diapaz2 Is Nothing Then
В конце кода макрос выводит сообщение о количестве выделенных ячеек.
После прохождения с положительной проверкой всех условий и выполнения всех инструкций кода макроса выделятся только те ячейки, которые равны или больше введенного значения.
Макрос для выделения ячеек по условию меньше или равно
Чтобы создать макрос для определения и выделения ячеек значения, которых равно или меньше исходному вводимому значению в диалоговое окно, тогда сделайте так:
- Скопируйте и вставьте в этот же модуль исходный код «BolsheRavno».
- Переименуйте название для копии кода в макросе с «BolsheRavno» на «MensheRavno».
- Измените текст для диалогового окна на: «Введите максимальное число для выделения ячеек»
- Ниже измените оператор сравнения значений текущих ячеек и переменной znach на: <=
Sub MensheRavno()
znach = InputBox("Введите максимальное число для выделения ячеек")
If diapaz1(i) <= znach
Полная версия кода для MensheRavno выглядит следующим образом:
Sub MensheRavno()
Dim i As Long
Dim znach As Variant
Dim diapaz1 As Range
Dim diapaz2 As Range
znach = InputBox("Введите максимальное число для выделения ячеек")
If znach = "" Then Exit Sub
If IsNumeric(znach) Then
znach = znach * 1
Else
MsgBox "Допустимо вводить только числовые значения!"
Exit Sub
End If
Set diapaz1 = Application.Intersect(Selection, ActiveSheet.UsedRange)
If diapaz1 Is Nothing Then
MsgBox "Сначала выделите диапазон!"
Exit Sub
Else
For i = 1 To diapaz1.Count
If diapaz1(i) <= znach And IsNumeric(diapaz1(i)) _
And Not IsEmpty(diapaz1(i)) Then
If diapaz2 Is Nothing Then
Set diapaz2 = diapaz1(i)
Else
Set diapaz2 = Application.Union(diapaz2, diapaz1(i))
End If
End If
Next
End If
If diapaz2 Is Nothing Then
MsgBox "Ненайдено ниодной ячейки!"
Else
diapaz2.Select
MsgBox "Найдено: " & diapaz2.Count & " ячеек!"
End If
End Sub
Чтобы проверить в действии работу второго макроса, снова выделите диапазон ячеек B2:F10 и выберите инструмент: «РАЗРАБОТЧИК»-«Код»-«Макросы»-«MensheRavno»-«Выполнить».
На этот раз в появившиеся диалоговое окно для поиска меньших значений от исходного вводим значение 0,5 и нажимаем ОК:
В результате мы видим, что макрос «MensheRavno» функционирует обратно пропорционально макросу «BolsheRavno».