0

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

   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

IE:对于 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 公式(我还没有安装任何其他插件等)。

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

在此处输入图像描述

4

3 回答 3

1

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

在其他一些表中,输入以下公式,其中 $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 日的数据)

在此处输入图像描述

于 2018-07-20T13:26:28.453 回答
1

不确定这是否对你有用,但无论如何。

看起来您总是查看特定年份(例如 2005 年)的 3 月、6 月、9 月和 12 月的最后一天。

但是您不是在寻找每个月的最后一个自然日。您希望每个月的最后一天出现在您的数据中(例如,这解释了为什么您使用 2005 年 12 月 30 日而不是 31 日,因为没有 31)。

在 Excel 中,日期是数字。未来你走得越多,相关的数字就越大。知道了这一点,您只需查看一系列日期的 MAX 值即可获取每个月的日期。

但首先,您需要使用 2 个条件定义日期范围:

  1. 日期月份必须是三月、六月、九月和十二月
  2. 您需要特定年份的日期(例如 2005 年)。

为此,您需要一个数组公式。我的公式得到特定月份和年份的最大天数。为了测试它,我在我的 Excel 中做了一个日期系列,从 2005 年 1 月 1 日开始,到 2017 年 12 月 31 日完成。我手动删除了 2005 年 12 月 31 日,因为该日期没有数据。

在此处输入图像描述

在单元格 I4 中,只需键入要检查的年份。该公式将获得当年 3 月、6 月、9 月和 12 月的最后一天。

我的数组公式是:

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

重要提示!:因为它是一个数组公式,你需要像往常一样输入它,然后,而不是EnterCTRL+ SHIFT+ENTER

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

现在你有了日期,你只需要 aVlookUp来获得你想要的值。

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

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

在此处输入图像描述

如果你想检查文件。我将一个示例上传到 Gdrive,因此您可以根据需要下载。下载

无论如何,请尝试根据您的需要调整此公式。

于 2018-07-20T13:55:49.837 回答
0

所以,有两种情况

  1. 当您拥有该月的确切最后几天时。(它更简单)。
    我有一个两周一次的数据。我采用了这种简单而创新的方法。从所有日期中,我首先使用Day()函数提取了日期。例如,Day(A1)。(请记住,在执行此操作时,请不要删除原始日期列。在单独的列中执行此操作,因为这有助于您稍后匹配日期)。
    然后我使用之前构建的 Day 列按降序对数据进行排序。这将首先放置所有结束日期。然后删除了底部的开始日期。所以,现在我只剩下结束日期了,但显然月份不合适。
    因此,创建另一个列,使用从原始日期列中仅提取月份和年份=MONTH(A1) & "/" & YEAR(A1). 使用此列对数据进行排序。而且,你很高兴!

  2. 当您没有确切的最后几天,但最大日期如上图所示。
    在这种情况下,在删除初始日期时,您必须注意以后需要删除的日期。
    例如,我删除了 31 天(包括第 17 天)月份的第 17 天和 30 天(如果存在)的月份的第 16 天,因为如果有这个日期,假设 2018 年 4 月 18 日,那么这个将是本月的最后一天,因为我有每两周一次的数据。

于 2020-03-24T11:21:36.370 回答