Abaixo, veremos um programa em Excel VBA que encontra o segundo valor mais alto.
Situação:
1. Primeiro, declaramos dois objetos Range e duas variáveis do tipo Double. Chamamos os objetos Range de rng e cell. Uma variável dupla que chamamos de maximumValue e uma variável dupla que chamamos de secondHighestValue.
Dim rng como intervalo, célula como intervalo
Dim higherValue As Double, secondHighestValue As Double
2. Inicializamos o objeto Range rng com o intervalo selecionado e as duas variáveis Double com valor 0.
Definir rng = Seleção
maximumValue = 0
secondHighestValue = 0
3. Primeiro, queremos encontrar o valor mais alto. Queremos verificar cada célula em um intervalo selecionado aleatoriamente (este intervalo pode ser de qualquer tamanho). No Excel VBA, você pode usar o loop For Each Next para isso. Adicione as seguintes linhas de código:
'Encontre o valor mais alto
Para cada célula em rng
Próxima célula
Nota: rng e cell são escolhidos aleatoriamente aqui, você pode usar qualquer nome. Lembre-se de referir-se a esses nomes no restante do código. A linha verde é um comentário e é adicionada aqui apenas para fornecer informações sobre este trecho de código.
4. Verificamos cada célula neste intervalo. Se for maior do que o valor mais alto, gravamos o valor na variável valor mais alto. Adicione a seguinte linha de código ao loop.
If cell.Value> higherValue Then higherValue = cell.Value
Observação: o primeiro valor é sempre maior que higherValue porque o valor inicial de higherValue é 0.
5. Em segundo lugar, queremos encontrar o segundo valor mais alto. Adicionamos outro loop For Each Next.
'Encontre o segundo valor mais alto
Para cada célula em rng
Próxima célula
6. Verificamos cada célula no intervalo selecionado novamente. Se for maior que secondHighestValue e menor que higherValue, gravamos o valor na variável secondHighestValue. Adicione a seguinte linha de código ao loop.
If cell.Value> secondHighestValue E cell.Value <higherValue Then secondHighestValue = cell.Value
7. Finalmente, exibimos o segundo valor mais alto usando um MsgBox.
MsgBox "O segundo valor mais alto é" & secondHighestValue
8. Coloque sua macro em um botão de comando, selecione os números e clique no botão de comando.
Resultado: