我有一个 Excel 文件,用于跟踪全年太阳的最大高度,每天一行,给定特定的纬度/经度。如果我编辑纬度/经度,每日最大高度就会发生变化。
我想编写一个公式来查询整个数据库(2 列,366 行),并告诉我太阳首次到达给定高度的日期,以及太阳不再到达该高度的日期。
例如,檀香山将在 5 月 1 日经历 80 度的最大太阳高度角,并一直保持 80 度或更高(每天一次),直到 8 月 19 日再次降至 80 度以下。
我想要一个可以生成这两个日期的 Excel 函数,因为我已经有海拔数据。
谢谢!
答案1
这里的解决方案是在数组公式中使用INDEX()
和的组合。MATCH()
我写了两个数组公式来解决这个问题。
开始日期:
{=INDEX(Dates, MATCH(TRUE, (Elevation>=Find_Elevation), 0), 1)}
结束日期:
{=INDEX(Dates, MATCH(TRUE, (Elevation>=Find_Elevation), 1), 1)}
工作原理如下
Elevation
是包含该年所有海拔高度的命名范围,Find_Elevation
是我们要查找的命名范围。在您的示例中,这是80
- 表达式返回一个
(Elevation>=Find_Elevation)
数组(这就是为什么这需要是一个数组公式)。只要每天的海拔大于或等于您要查找的海拔,它就会返回。TRUE
FALSE
TRUE
MATCH()
带有第三个参数的函数返回0
它第一次看到的索引TRUE
。这是太阳位于您要寻找的高度之上的第一天的索引。1
使用函数中的第三个参数MATCH()
可返回最后一次看到的TRUE
。这是太阳位于您要查找的高度之上的最后一天的索引。- 我们将这两个作为第二个参数传递给
INDEX()
,它返回与返回值相对应的日期MATCH()
我使用 FormulaChop 来生成上述公式(完整披露:我编写了 FormulaChop)。 这里是 FormulaChop 显示此公式的屏幕截图。这里这是演示公式的电子表格的链接。请原谅我不得不编造太阳高度角。