
在我的示例中,值和日期列在不同的列中。此外,我试图让结果显示实际日期之间的最大值(而不是单元格中列出的日期)。
例如,我将日期放在 AC 列中,将股票价格放在 AG 列中。我将结束日期放在 SU 列中(该日期保持不变,比当前 AC 列中的日期提前 10 年)。我将公式放在 SV 列中。SV17249 的公式为:
=MAX(IF((AC14739:AC17249<=SU17249)*(AC14739:AC17249>=AC14739),AG14739:AG17249,""))
我选择 AC14739:AC17249 范围是因为它等于 10 年期间 (2,510) 的近似年度交易日数 (x10)。但是,我试图找到两个相隔恰好 10 年的日期之间的最大值(例如 2000 年 1 月 1 日至 2010 年 1 月 1 日)。但有些年份的交易日比其他年份多或少,这会偏离我在公式中输入的 2510 个固定范围。
有没有办法让上述公式得出单元格 AC17249 中的实际日期和 AC17249 之前 10 年的日期之间 AG 的最高股票价格?
答案1
您的公式中的一般方法可能与其他方法一样好。只需进行调整即可达到您想要的效果。
看起来您的数据量很大,因此如果您限制评估范围,可能会加快速度。如果 10 年内大约有 2510 行,则向上舍入到保证包含 10 年的数字,例如 2600 行。因此,给定行的评估范围将以给定行结束,并包含之前的 2600 行。
我认为,误差在一天左右,10 个日历年将包括 3652 天。日历的起始日期不一定是交易日,因此我们需要找到该日历日期之后的第一个交易日(您不想重复计算结束日期;您的范围包括结束日期,因此在此之前的 10 年实际上是上一时期的结束日期)。
我将以您问题中的结束日期为基础来举例,该日期包含在 AC17249 中。这将使评估范围的相关起始点位于 AC14649。如果您将范围硬编码为相对寻址,则应该能够复制公式并使其正确调整其他行。如果没有庞大的电子表格,很难验证公式,但我相信这应该可行:
{=MAX(IF((AC14649:AC17249>AC17249-3652),AG14649:AG17249,0))}
这是一个数组公式,因此需要用Ctrl- Shift-Enter而不是 来确认Enter。