代码之家  ›  专栏  ›  技术社区  ›  Hercules Apergis

如何在Excel的日常数据中选择所选月份的最后一天

  •  0
  • Hercules Apergis  · 技术社区  · 7 年前

    我有2005年1月1日至2017年12月29日的每日数据。我希望每年选择3月、6月、9月和12月的最后一天,以及它们各自的数据。部分数据:

    日期变量
    2005年3月30日1.2943
    2005年3月31日1.2964
    2005年4月1日1.2959
    2005年4月4日1.2883
    2005年4月5日1.281
    

    例如:对于2005年,我想要2005年3月31日、2005年6月30日、2005年9月30日和2005年12月30日的日期。期望输出:

    日期变量
    2005年3月31日1.2964
    2005年6月30日1.9859
    2005年9月30日1.2233
    2005年12月30日1.2814
    

    我目前有内置Excel公式(我没有安装任何其他插件等)。

    更具体地说:左侧是数据,右侧是所需的输出。

    .

       Date    Variable
    30-Mar-2005 1.2943
    31-Mar-2005 1.2964
    1-Apr-2005  1.2959
    4-Apr-2005  1.2883
    5-Apr-2005  1.281
    

    例如:2005年,我想知道日期是2005年3月31日、2005年6月30日、2005年9月30日和2005年12月30日。期望输出:

    Date        Variable
    31-Mar-2005 1.2964
    30-Jun-2005 1.9859
    30-Sep-2005 1.2233
    30-Dec-2005 1.2814
    

    我目前有内置Excel公式(我没有安装任何其他插件等)。

    更具体地说:左边是数据,右边是所需的输出。

    2 回复  |  直到 7 年前
        1
  •  1
  •   Foxfire And Burns And Burns    7 年前

    enter image description here

    =MAX(IF(MONTH(IF(YEAR($A$4:$A$4750)=$I$4;$A$4:$A$4750))=3;$A$4:$A$4750))

    进入

    你需要这个公式的4倍。只需将3月改为您需要的月份(6、9和12)。

    既然你有了约会,你只需要一个 VlookUp 得到你想要的价值。

    =VLOOKUP(G5;$A$4:$B$4750;2;false)

    如果我改变年份值,我会得到这些新值:

    enter image description here

    如果你想检查文件。我上传了一个例子到gdrive,所以你可以下载,如果你想的话。 Download

    无论如何,试着使这个公式适应你的需要。

        2
  •  1
  •   Ron Rosenfeld    7 年前

    我将一个欧元转换列表转换为一个表,并使用结构化引用。但是,如果您愿意,可以使用正常范围引用。

    在其他表中,输入以下公式,其中$A$45表示数据表中的第一个季度结束日期。

    f2:=if(eomonth($A$45,(rows($1:1)-1)*3)>max(table1[日期],“”,lookup(2,1/(eomonth($A$45,(rows($1:1)-1)*3)>=table1[日期]),table1[日期])
    

    在相邻列中,输入公式:

    g2:=iferor(vlookup(f3,table1,2,false),“”)
    

    然后填充,直到得到空白。

    (在我的示例表中,最后一个日期是2006年1月27日,因此最后包含的“结束日期”是2005年12月30日,没有2005年12月31日的数据)

    在其他表中,输入以下公式,其中$A$45表示数据表中的第一个季度结束日期。

    F2: =IF(EOMONTH($A$45,(ROWS($1:1)-1)*3)>MAX(Table1[Date]),"",LOOKUP(2,1/(EOMONTH($A$45,(ROWS($1:1)-1)*3)>=Table1[Date]),Table1[Date]))
    

    在相邻列中,输入公式:

    G2: =IFERROR(VLOOKUP(F3,Table1,2,FALSE),"")
    

    然后填写直到你得到空白。

    (在我的示例表中,最后一个日期是2006年1月27日,因此最后包含的“结束日期”是2005年12月30日,没有2005年12月31日的数据)

    enter image description here