【问题标题】:Slice an Table to produce an array based on a Date Interval (Excel)切片表以基于日期间隔 (Excel) 生成数组
【发布时间】:2018-03-06 14:45:39
【问题描述】:

我在 Excel 工作表上有下表:

AN_DATE     PORT_RET     PORT_MKTVALUE 
1-Jul-15    0.04%        749,708,691.20 
2-Jul-15    0.10%        750,456,134.73 
3-Jul-15    -0.01%       750,387,777.34 
6-Jul-15    -0.13%       749,424,519.97 
7-Jul-15    -0.04%       749,093,484.64 
8-Jul-15    -0.19%       747,704,970.94 
9-Jul-15    0.11%        747,189,760.25 
10-Jul-15   0.30%        749,417,098.50 

是否可以使用公式提取两个日期之间的数组?例如我想要一个在 7 月 7 日到 10 日之间返回 PORT_RET 的公式,结果数组应该是(作为一组新单元格的结果):

7-Jul-15    -0.04%
8-Jul-15    -0.19%
9-Jul-15    0.11%
10-Jul-15   0.30%

【问题讨论】:

  • 为什么不使用过滤器?
  • 我想输入间隔的初始和结束日期,并获取切片数组来计算过滤器无法工作的其他一些间隔参数。例如每个数据点的区间上的累积回报。并根据计算更新图表
  • 然后用你计划使用的公式询问你想要什么作为最终结果。您将需要数组类型的公式,并且根据您想要的最终公式,有更好、更好、最好的方法。
  • 完美描述了我想要的。谢谢
  • 好吧,那我误会了,你想在新的单元格中输出,从中应用新的公式吗?您是否希望输出形式可以直接在另一个公式中使用,而不需要辅助单元格?

标签: arrays excel excel-formula


【解决方案1】:

将 07-Jul-2015 放入 Z1 和 10-Jul-2015 放入 Z2,创建一个命名范围(公式、定义名称、名称管理器),其引用如下:

=index('sheet1'!$A:$B, 'sheet1'!$Z$1, 0):index('sheet1'!$A:$B, 'sheet1'!$Z$2, 0)

这将创建一个 'sheet1' 的“切片”!$A:$B 等于 'sheet1'!$A$6:$B$9。

【讨论】:

    【解决方案2】:

    将您的开始日期和结束日期放在 E1:F1 中,将其放在第一个单元格中并向下复制:

    =IFERROR(INDEX(A:A,AGGREGATE(15,6,ROW($A$2:$A$9)/(($A$2:$A$9>=$E$1)*($A$2:$A$9<=$F$1)),ROW(1:1))),"")
    


    现在我想要澄清的原因,假设你想要那个范围的 PORT_RET 的 MEDIAN。您可以轻松跳过辅助单元格并使用此数组公式直接引用数据:

    =MEDIAN(IF(($A$2:$A$9>=$E$1)*($A$2:$A$9<=$F$1),$B$2:$B$9))
    

    作为一个数组公式,它必须使用 Ctrl-Shift-enter 而不是 Enter 来确认。

    正如您在下面看到的,我得到了相同的答案,而无需帮助列。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-28
      • 1970-01-01
      • 2015-07-19
      • 2012-05-28
      • 1970-01-01
      • 1970-01-01
      • 2022-11-03
      相关资源
      最近更新 更多