¿Excel VBA Columna de Cifras saber cual es la más alta?

Hola

¿Tengo un código solo me falta implementar cual de los siguientes datos de columna es más alta?

Ejemplo:

Columna A

110,000

120,000

105,000

102,000

y que me aparezca el mas alto en msgbox

msgbox("el mas alto es  "& 120,000)

Saludos!..

3 respuestas

Respuesta
1

Este es la instrucción

Sub maximo()
'Por.DAM
    valor = Application.Max(Range("A:A"))
    MsgBox "El más alto es: " & valor
End Sub

Saludos.Dante Amor

Respuesta
1

Estas serían las instrucciones:

maxi = Application.WorksheetFunction.Max(Sheets("Hoja1").Range("A:A"))
MsgBox "El máximo es: " & maxi

Ajusta nombre de hoja y col o rango donde están los datos.

Si necesitas mostrar el máximo con formato de numero o algún otro utiliza alguna opción de formato.

Por ej:

MsgBox "El máximo es: " & Format(maxi, "#,##0")

Sdos

Elsa

Respuesta

Las respuestas que te han dado los líderes del tema están bien y son las que tienes que usar.

Pero imagina por un momento que no existiera la función MAX. Hay muchos lenguajes de programación que no la tienen. O que estuvieras en el desierto sin conexión a internet y te hubieras olvidado del nombre de la función.

Entonces podrías usar esta macro

Sub maximo3()
'ValeroASM
Dim mayor As Double
Dim YaPrimero As Boolean
Dim FilaFinal, i As Integer
FilaFinal = Range("A" & Rows.Count).End(xlUp).Row
MsgBox (FilaFinal)
YaPrimero = False
For i = 1 To FilaFinal
    If Not YaPrimero Then
        If IsNumeric(Cells(i, 1)) Then
            mayor = Cells(i, 1)
            YaPrimero = True
        End If
    Else
        If Cells(i, 1) > mayor Then mayor = Cells(i, 1)
    End If
Next
MsgBox ("El número mayor es: " & mayor)
End Sub

pero solo en ese caso.

Y de esta forma puedes ver que no hay obstáculo y se puede hacer todo.

¡Ah! La línea

Msgbox FilaFinal

Sobra.

Era un mensaje de comprobación de errores porque al principio no funcionaba muy bien la macro. Esta es la macro

Sub maximo3()
Dim mayor As Double
Dim YaPrimero As Boolean
Dim FilaFinal, i As Integer
FilaFinal = Range("A" & Rows.Count).End(xlUp).Row
YaPrimero = False
For i = 1 To FilaFinal
    If Not YaPrimero Then
        If IsNumeric(Cells(i, 1)) Then
            mayor = Cells(i, 1)
            YaPrimero = True
        End If
    Else
        If Cells(i, 1) > mayor Then mayor = Cells(i, 1)
    End If
Next
MsgBox ("El número mayor es: " & mayor)
End Sub

¡Gracias! Excelente Respuesta Experto...

·

Me alegro que te guste la respuesta. Ahora nos gustaría que valoraras las respuestas por favor, es la pequeña compensación por el trabajo y a ti no te cuesta nada.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas