Найти второе самое высокое значение в Excel VBA
Ниже мы рассмотрим программу в Excel VBA, которая находит второе самое высокое значение.
Ситуация:
-
Во-первых, мы объявляем два объекта Range и две переменные типа Double. Мы называем объекты Диапазон ГСЧ и клетки. Одна двойная переменная, которую мы называем highestValue, и одна двойная переменная, которую мы называем secondHighestValue.
Dim rng As Range, cell As Range Dim highestValue As Double, secondHighestValue As Double
-
Мы инициализируем объект ГСЧ Range с выбранным диапазоном и двумя двойными переменными со значением 0.
Set rng = Selection highestValue = 0 secondHighestValue = 0
-
Во-первых, мы хотим, чтобы найти самое высокое значение. Мы хотим, чтобы проверить каждую ячейку в случайно выбранном диапазоне (этот диапазон может быть любого размера). В Excel VBA, вы можете использовать для каждого следующего цикла для этого. Добавьте следующие строки кода:
'Find Highest Value For Each cell In rng Next cell
Примечание: RNG и клетки случайным образом выбраны здесь, вы можете использовать любые имена.
Не забывайте ссылаться на эти имена в остальной части кода. Зеленая линия является комментарием и добавляется только здесь, чтобы предоставить информацию об этой части кода.
-
Мы проверяем каждую ячейку в этом диапазоне. Если она выше, чем highestValue, мы записываем значение переменной highestValue. Добавьте следующую строку кода в петлю.
If cell.Value > highestValue Then highestValue = cell.Value
Примечание: первое значение всегда выше, чем highestValue, поскольку начальное значение highestValue равно 0.
-
Во-вторых, мы хотим, чтобы найти вторую самую высокую ценность. Добавим еще один для каждого следующего цикла.
'Find Second Highest Value For Each cell In rng Next cell
-
Мы проверяем каждую ячейку в выбранном диапазоне снова. Если она выше, чем secondHighestValue и ниже, чем highestValue, мы записываем значение переменной secondHighestValue. Добавьте следующую строку кода в петлю.
If cell.Value > secondHighestValue And cell.Value < highestValue Then secondHighestValue = cell.Value
-
И, наконец, мы отображаем второе самое высокое значение с помощью MsgBox.
MsgBox "Second Highest Value is " & secondHighestValue
-
Поместите макрос в командную кнопку, выберите номер и нажмите на кнопку команды.
Результат: