Buscar mayor valor de un rango de celdas según criterio

Tengo un archivo de excel donde en una columna tengo códigos y en otra valores de ventas, lo que necesito es determinar el mayor valor de ventas por cada código.

Codigo                      Ventas              Resultado

12345                        200                   400

12345                        100                   400

12345                        400                   400

12389                        200                   200

12368                        100                   300

12368                        300                   300

12368                        200                   300

Quiero que en la columna resultado aparezca así, el mayor valor de ventas de cada código, independiente de la cantidad de veces que aparezca.

2 Respuestas

Respuesta
1

Suponiendo que el código está en la columna A y que las ventas están en la columna B, escribe la siguiente fórmula en la celda C2

=MAX(SI(A$2:A$15=A2;B$2:B$15))

Cambia en la fórmula el número 15 por el número de la última fila que tengas. La fórmula es matricial, para que funcione, después de editarla debes presionar las 3 teclas :

Shift + Control + Enter

Después de presionar las 3 teclas notarás que la fórmula aparece entre llaves, como se muestra en la imagen:

Copia o arrastra la fórmula hasta el final de tus datos.


Respuesta

¿No hay problema en ordenar los datos primero?

Marcial Castro.

Si no hay problema para ordenarlos, asocia este código a un botón o a una tecla y listo.

Sub PonerMaximo()
'(c) Marcial Castro
'************************************************************
'Cambia estos cuatro valores y pon los que tengas en tu hoja
colCod = "A"    'Columna donde están los códigos
colVen = "B"    'Columna donde están las ventas
colRes = "C"    'Columna donde están los resultados
linIni = 4      'Línea donde está el primer código
'************************************************************
'Ultima línea de datos
linFin = Range(colCod & Rows.Count).End(xlUp).Row
'Ordenamos de menor a mayor los datos
With Range(colCod & linIni & ":" & colVen & linFin)
  .Sort key1:=.Cells(1, 1), Header:=xlNo
End With
codigo = Range(colCod & linIni).Value
Max = 0 ' Variable que guarda el máximo de cada código
codTemp = codigo
lin = linIni
Do While codigo <> ""
  Do While codTemp = codigo
        'Comprobamos si las ventas son mayores que el máximo
        If Range(colVen & lin).Value > Max Then
            Max = Range(colVen & lin).Value
        End If
        lin = lin + 1
        codigo = Range(colCod & lin).Value
    Loop
        'Colocamos el máximo en la columna de Resultados
        Range(colRes & linIni & ":" & colRes & lin - 1).Value = Max
        'Inicializamos variables
        Max = 0
        linIni = lin
        codTemp = codigo
Loop
End Sub

Si te ha servido.

Otra vez, no se porqué se me metió en la cabeza que se debería hacer mediante una macro, por lo que la respuesta que te ha dado Dante mediante fórmulas matriciales, es más sencilla y rápida de aplicar.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas