Columna con celdas distintas, si varias celdas de esta columna coinciden, obtener la de menor valor de las asociadas

Lo que pretendo es obtener el menor valor de la columna precios para aquellas celdas que coinciden en columna móviles (D). Estoy dándole duro pero no me sale...

1 Respuesta

Respuesta
1

Ocupas dos fórmulas que puedes ver en la imagen junto con el resultado

y estas son las formulas

MIN(DESREF($C$11,COINCIDIR(B11,$B$11:$B$39,0),0,CONTAR.SI($B$11:$B$39,B11)))
MIN(DESREF($C$11,COINCIDIR(C19,$B$11:$B$39,0)-1,0,CONTAR.SI($B$11:$B$39,C19)))

Muchas gracias por su respuesta, pero la verdad es que no la entiendo. Discúlpeme.

Lo que pretendo es generar una fórmula genérica sin tener que pararme a mirar donde terminan manzanas y donde peras (Resultado que pretendo con fondo de colores). La columna de pera, manzanas, limones etc... tiene más de 4000 celdas.

Esto es lo que me sale intentando aplicar su fórmula.

Yo he intentado esto =SI(B10=B10:B35;MIN(C10:C17);"")   pero tampoco.

Un saludo y mil gracias

Pues sacar los mínimos con por tramos y colorear mediante fórmulas no es puede, con Desref y mínimo lo que puedes sacar son los tramos y hasta ahí llegaste tienes que colorear manual, con una macro puedes hacer ambas cosas a la vez en pocos segundos sin importar si son 4000 o 1 millón de registros, te paso el resultado

y la macro 

Sub MINIMOS_COLOREADOS()
Dim FUNCION As WorksheetFunction
Set FUNCION = WorksheetFunction
Set datos = Range("B10").CurrentRegion
datos.Interior.ColorIndex = xlNone
With Range("F10")
    datos.Copy: .PasteSpecial
    .RemoveDuplicates Columns:=1
    Set lista = .CurrentRegion
    With lista
        F = .Rows.Count: C = .Columns.Count
        For I = 1 To F
            FRUTA = .Cells(I, 1)
            CUENTA = FUNCION.CountIf(datos.Columns(1), FRUTA)
            FILA = FUNCION.Match(FRUTA, datos.Columns(1), 0)
            Set frutas = datos.Rows(FILA).Resize(CUENTA, 3)
            XColor = FUNCION.RandBetween(3, 52)
            frutas.Interior.ColorIndex = XColor
            frutas.Cells(frutas.Rows.Count, 3) = FUNCION.Min(frutas.Columns(2))
        Next I
        .Clear
    End With
    Set datos = Nothing: Set lista = Nothing: Set frutas = Nothing
End With
End Sub

Madre mía, eres un fenómeno! Muchísimas gracias. Te debo un desayuno!

¿Es posible que el resultado se refleje en la celda contigua al menor precio como en la imagen, y no al final del grupo?

¿Algo así?

y esta es la macro modificada

Sub MINIMOS_COLOREADOS()
Dim FUNCION As WorksheetFunction
Set FUNCION = WorksheetFunction
Set datos = Range("B10").CurrentRegion
datos.Interior.ColorIndex = xlNone
With Range("F10")
    datos.Copy: .PasteSpecial
    .RemoveDuplicates Columns:=1
    Set lista = .CurrentRegion
    With lista
        F = .Rows.Count: C = .Columns.Count
        For I = 1 To F
            FRUTA = .Cells(I, 1)
            CUENTA = FUNCION.CountIf(datos.Columns(1), FRUTA)
            fila = FUNCION.Match(FRUTA, datos.Columns(1), 0)
            Set frutas = datos.Rows(fila).Resize(CUENTA, 3)
            XColor = FUNCION.RandBetween(3, 52)
            frutas.Interior.ColorIndex = XColor
            minimo = FUNCION.Min(frutas.Columns(2))
            fila = FUNCION.Match(minimo, frutas.Columns(2), 0)
            frutas.Cells(fila, 3) = minimo
        Next I
        .Clear
    End With
    Set datos = Nothing: Set lista = Nothing: Set frutas = Nothing
End With
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas