Di seguito vedremo un programma in Excel VBA che trova il secondo valore più alto.

Situazione:

Find Second Highest Value in Excel VBA

  1. In primo luogo, si dichiara due oggetti Gamma e due variabili di tipo Double. Chiamiamo la gamma di oggetti RNG e delle cellule. Una camera variabile che chiamiamo highestValue, e una variabile doppia che chiamano secondHighestValue.

Dim rng As Range, cell As Range

Dim highestValue As Double, secondHighestValue As Double
  1. inizializzare il RNG oggetto Range con l’intervallo selezionato e le due variabili doppie con valore 0.

Set rng = Selection

highestValue = 0

secondHighestValue = 0
  1. In primo luogo, vogliamo trovare il valore più alto. Noi vogliamo controllare ogni cella in un intervallo selezionato in modo casuale (questo intervallo può essere di qualsiasi dimensione). In Excel VBA, è possibile utilizzare il ciclo For Each di questo componente. Aggiungere le seguenti righe di codice:

'Find Highest Value

For Each cell In rng

Next cell

Nota: RNG e cellule sono scelti a caso qui, è possibile utilizzare qualsiasi nome.

Ricordarsi di fare riferimento a questi nomi nel resto del codice. La linea verde è un commento e si aggiunge qui solo per fornire informazioni su questo pezzo di codice.

  1. Controlliamo ogni cella in questa gamma. Se è superiore a quello highestValue, scriviamo il valore alla highestValue variabile. Aggiungere la seguente riga di codice al ciclo.

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

Nota: il primo valore è sempre superiore highestValue perché il valore iniziale di highestValue è 0.

  1. In secondo luogo, vogliamo trovare il secondo più alto valore. Aggiungiamo un altro ciclo For Each Avanti.

'Find Second Highest Value

For Each cell In rng

Next cell
  1. Controlliamo ogni cella nell’intervallo selezionato nuovamente. Se è superiore a quello secondHighestValue ed inferiore highestValue, scriviamo il valore alla secondHighestValue variabile. Aggiungere la seguente riga di codice al ciclo.

If cell.Value > secondHighestValue And cell.Value < highestValue Then secondHighestValue = cell.Value
  1. Infine, visualizzare il secondo valore più alto utilizzando un MsgBox.

MsgBox "Second Highest Value is " & secondHighestValue
  1. Posizionare la macro in un pulsante di comando, selezionare i numeri e fare clic sul pulsante di comando.

Risultato:

Find Second Highest Value Result