Excel VLOOKUP 是否是我的应用程序的最佳选择?

Excel VLOOKUP 是否是我的应用程序的最佳选择?

我有一个 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)数组(这就是为什么这需要是一个数组公式)。只要每天的海拔大于或等于您要查找的海拔,它就会返回。TRUEFALSETRUE
  • MATCH()带有第三个参数的函数返回0它第一次看到的索引TRUE。这是太阳位于您要寻找的高度之上的第一天的索引。
  • 1使用函数中的第三个参数MATCH()可返回最后一次看到的TRUE。这是太阳位于您要查找的高度之上的最后一天的索引。
  • 我们将这两个作为第二个参数传递给INDEX(),它返回与返回值相对应的日期MATCH()

我使用 FormulaChop 来生成上述公式(完整披露:我编写了 FormulaChop)。 这里是 FormulaChop 显示此公式的屏幕截图。这里这是演示公式的电子表格的链接。请原谅我不得不编造太阳高度角。

相关内容