Funcion MAX SI Conjunto Excel

Estoy trabajando con una funcion armada que encontre en el foro pero no puedo hacer que funcione. Tengo una base de datos de espacios fisicos con temperaturas por fecha. Quiero de cada espacio en un rango del dia de hoy hasta 10 dias para atras obtener la maxima temperatura registrada. Esta es la que encontra pero no me funciona, em da 0:

Public Function maxsi(criterio As String, rango_criterios As Range, rango_valores As Range)
' recupera el maximo de una lista en funcion de su criterio de seleccion
Dim maximo As Double
Dim i As Long
Dim r As Range
'4c7569735f50
If Application.WorksheetFunction.CountA(rango_criterios) = 0 Then Exit Function
Dim lista(65535) As Double
For Each r In rango_criterios
If r = criterio Then lista(i) = CDbl(r.Offset(0, rango_valores.Column - 1)): i = (i + 1)
Next
Set rango_criterios = Nothing
Set rango_valores = Nothing
Set r = Nothing
maximo = Application.WorksheetFunction.Max(lista)
maxsi = maximo
End Function

Si alguien me podria ayudar a poder resolverlo le agradeceria!

1 Respuesta

Respuesta
1

Mejor te preparo un nueva función. Explícame con un par de ejemplos lo que necesitas.

Si te es posible pon un par de imágenes de cómo tienes los datos y qué es lo que esperas de resultado, procura que en las imágenes se vean las filas y las columnas de excel.

Necesito la temperatura max de los ultimos 10 dias

hoy()-10 por ahi arranco. 

Pude hacer el promedio usando promedio.si.conjunto y sacar el promedio de temperatura de los ultimos 10 dias pero ahora necesito hacer lo mismo con criterios con la funcion MAX

Te anexo la función:

Function tempmax(fechas As Range, valores As Range)
'Por.Dante Amor
    If fechas.Count = valores.Count Then
        For i = 1 To fechas.Count
            If fechas(i) > Date - 10 And fechas(i) < Date Then
                If valores(i) > elmax Then elmax = valores(i)
            End If
        Next
        tempmax = elmax
    End If
End Function

Ejemplo:

=tempmax(A53:AG53,A54:AG54)

De A53 a AG53 van las fechas

De A54 a AG54 van los valores.

S a l u d o s . D a n t e   A m o r

Recuerda valorar la respuesta.

Muchísimas gracias por tu aporte! Hay alguna forma que pueda reemplazar el 10 y darle el valor que quiera dependiendo del informe que deba preparar? Capas necesito la temperatura de los últimos 7 días o de los últimos dos. Directamente modifico ese vaLor o se le puede asignar una celda ?

Muchas gracias!

saludos

Se puede asignar una celda

Function tempmax(dias As Range, fechas As Range, valores As Range)
'Por.Dante Amor
    If fechas.Count = valores.Count And dias > 0 Then
        For i = 1 To fechas.Count
            If fechas(i) > Date - dias And fechas(i) < Date Then
                If valores(i) > elmax Then elmax = valores(i)
            End If
        Next
        tempmax = elmax
    End If
End Function

Ejemplo:

=tempmax(S1,A53:AG53,A54:AG54)

En la celda S1 va el número de días.

S a l u d o s . D a n t e   A m o r

Recuerda valorar la respuesta.

Muchas gracias Dante.

Lo ultimo, necesito ahora la de mínimo. Cuando modifico la de max a min me cuenta las celdas vacías y siempre me arroja 0°C como mínimo.

La fórmula debería solo tomar los mínimos de las celdas con valores. Si lleno las celdas con algún signo como " - ", me toma el guion como máximo.

Muchas gracias por tu aporte Dante, es de gran ayuda!

Con gusto te sigo apoyando, podrías crear una pregunta nueva para cada petición.

En el texto de la pregunta escribe que va dirigida a Dante Amor

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas