¿Es BUSCARV de Excel la mejor opción para mi aplicación?

¿Es BUSCARV de Excel la mejor opción para mi aplicación?

Tengo un archivo de Excel que rastrea la elevación máxima del sol durante todo el año, una fila por día, dada una latitud/longitud específica. Si edito la latitud/longitud, la elevación máxima diaria cambia.

Me gustaría escribir una fórmula que consulte toda la base de datos (2 columnas, 366 filas) y me dé el día en que el sol comienza a alcanzar una elevación determinada y luego nuevamente cuando ya no alcanza esa elevación.

Por ejemplo, Honolulu experimentará un ángulo máximo de elevación solar de 80 grados el 1 de mayo, permanecerá en 80 grados o más (una vez al día) hasta el 19 de agosto, cuando volverá a caer por debajo de los 80 grados.

Me gustaría una función de Excel que genere estas dos fechas, dado que ya tengo los datos de elevación.

¡Gracias!

Respuesta1

La solución aquí es utilizar una combinación de INDEX()y MATCH()en una fórmula matricial.

Escribí dos fórmulas matriciales que resuelven el problema.

Fecha de inicio: {=INDEX(Dates, MATCH(TRUE, (Elevation>=Find_Elevation), 0), 1)}

Fecha final: {=INDEX(Dates, MATCH(TRUE, (Elevation>=Find_Elevation), 1), 1)}

Así es como funcionan

  • Elevationes un rango con nombre que contiene todas las elevaciones del año, Find_Elevationes un rango con nombre que es el que estamos buscando. En tu ejemplo, esto es80
  • La expresión (Elevation>=Find_Elevation)devuelve una matriz de TRUEy FALSE(por eso debe ser una fórmula matricial). Regresa TRUEcada vez que la elevación de cada día es mayor o igual a la elevación que estás buscando.
  • La MATCH()función con el tercer argumento 0devuelve el índice de la primera vez que ve TRUE. Este es el índice del primer día en que el sol está por encima de la elevación que estás buscando.
  • El uso del tercer argumento 1en la MATCH()función hace que regrese la última vez que ve TRUE. Este es el índice del último día en que el sol estuvo por encima de la elevación que estás buscando.
  • Pasamos ambos como segundo argumento INDEX()y devuelve la fecha correspondiente al valor devuelto porMATCH()

Utilicé FormulaChop para generar las fórmulas anteriores (Divulgación completa: escribí FormulaChop). AquíEs una captura de pantalla de cómo FormulaChop muestra esta fórmula.Aquíes un enlace a una hoja de cálculo que demuestra la fórmula. Disculpe el hecho de que tuve que compensar las elevaciones solares.

información relacionada