Макрос для выделения ячеек 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
VBA.

Теперь, если мы хотим автоматически выделить несмежный диапазон ячеек, которые содержат в своем значении 100% или больше, выделите диапазон B2:F10. А потом выберите инструмент: «РАЗРАБОТЧИК»-«Код»-«Макросы»-«BolsheRavno»-«Выполнить». В результате чего появиться диалоговое окно интерфейса нашего макроса.

Введите минимальное число.

В поле ввода введите числове значение 1 и нажмите на кнопку ОК:

Пример.

Макрос выделит все ячейки в предварительно выделенном диапазоне данных таблицы, значения которых находиться на уровне 100% или больше. После выполнения кода макроса можно изменить вон выделенных ячеек выбрав инструмент: «ГЛАВНАЯ»-«Шрифт»-«Цвет заливки».

Заполняя поле ввода диалогового окна макроса следует учитывать, что исходное вводимое значение должно быть числом. А если нас интересуют другие значения кроме 100% тогда следует учитывать формат ячеек. Например, для 50% следует вводить 0,5. Все должно быть в соответствии с форматом отображения чисел в ячейках.

В данном VBA-коде выполняется 5 проверок для инструкций алгоритма и введенного значения в диалоговое окно интерфейса макроса:

  1. Не является ли введенное значение пустым?
  2. If znach = "" Then Exit Sub

  3. Является ли числом введенное значение? Если же нет, сразу будет отображена информация о том, что введенное значение не является числовыми, а с помощью инструкции Exit Sub прекращается выполнение кода. В результате дальнейшие инструкции макроса не будут выполнены.
  4. If IsNumeric(znach) Then

  5. Выделен ли необходимый исходный диапазон ячеек внутри таблицы перед запуском макроса?
  6. If diapaz1 Is Nothing Then

  7. Равно или больше значение текущей ячейки по отношению к значению в переменной znach?
  8. If diapaz1(i) >= znach

  9. Найдены ли ячейки со значениями соответствующие критериям поиска и сколько их?
  10. If diapaz2 Is Nothing Then

В конце кода макрос выводит сообщение о количестве выделенных ячеек.

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



Макрос для выделения ячеек по условию меньше или равно

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

  1. Скопируйте и вставьте в этот же модуль исходный код «BolsheRavno».
  2. Переименуйте название для копии кода в макросе с «BolsheRavno» на «MensheRavno».
  3. Sub MensheRavno()

  4. Измените текст для диалогового окна на: «Введите максимальное число для выделения ячеек»
  5. znach = InputBox("Введите максимальное число для выделения ячеек")

  6. Ниже измените оператор сравнения значений текущих ячеек и переменной znach на: <=
  7. 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».


en ru