Ниже мы рассмотрим программу в Excel VBA, которая находит второе самое высокое значение.

Ситуация:

Find Second Highest Value in Excel VBA

  1. Во-первых, мы объявляем два объекта Range и две переменные типа Double. Мы называем объекты Диапазон ГСЧ и клетки. Одна двойная переменная, которую мы называем highestValue, и одна двойная переменная, которую мы называем secondHighestValue.

Dim rng As Range, cell As Range

Dim highestValue As Double, secondHighestValue As Double
  1. Мы инициализируем объект ГСЧ Range с выбранным диапазоном и двумя двойными переменными со значением 0.

Set rng = Selection

highestValue = 0

secondHighestValue = 0
  1. Во-первых, мы хотим, чтобы найти самое высокое значение. Мы хотим, чтобы проверить каждую ячейку в случайно выбранном диапазоне (этот диапазон может быть любого размера). В Excel VBA, вы можете использовать для каждого следующего цикла для этого. Добавьте следующие строки кода:

'Find Highest Value

For Each cell In rng

Next cell

Примечание: RNG и клетки случайным образом выбраны здесь, вы можете использовать любые имена.

Не забывайте ссылаться на эти имена в остальной части кода. Зеленая линия является комментарием и добавляется только здесь, чтобы предоставить информацию об этой части кода.

  1. Мы проверяем каждую ячейку в этом диапазоне. Если она выше, чем highestValue, мы записываем значение переменной highestValue. Добавьте следующую строку кода в петлю.

If cell.Value > highestValue Then highestValue = cell.Value

Примечание: первое значение всегда выше, чем highestValue, поскольку начальное значение highestValue равно 0.

  1. Во-вторых, мы хотим, чтобы найти вторую самую высокую ценность. Добавим еще один для каждого следующего цикла.

'Find Second Highest Value

For Each cell In rng

Next cell
  1. Мы проверяем каждую ячейку в выбранном диапазоне снова. Если она выше, чем secondHighestValue и ниже, чем highestValue, мы записываем значение переменной secondHighestValue. Добавьте следующую строку кода в петлю.

If cell.Value > secondHighestValue And cell.Value < highestValue Then secondHighestValue = cell.Value
  1. И, наконец, мы отображаем второе самое высокое значение с помощью MsgBox.

MsgBox "Second Highest Value is " & secondHighestValue
  1. Поместите макрос в командную кнопку, выберите номер и нажмите на кнопку команды.

Результат:

Find Second Highest Value Result