【发布时间】:2015-11-13 16:41:06
【问题描述】:
我有一张表,我需要获取每年每个月的最后一天。我的表有从 2007 年到 2015 年的日期和月份,而月份中的天数并不总是相同。
我正在寻找一个公式,该公式将在我的范围内查找,并返回每个月的最后一天,具体取决于年份。 (我的数据不是每天都有数据,所以日历上的最后一天不一定是我数据中的最后一天)。
这是我的日期信息(列 A、B 和 C)的(非常)简短示例:
12 2009 24
12 2009 28
12 2009 29
12 2009 30
12 2009 31
1 2010 4
1 2010 5
1 2010 6
1 2010 7
1 2010 8
1 2010 11
1 2010 12
1 2010 13
所以是月、年、日,从1 2007 1 变为8 2015 31。
我可以使用什么样的公式来返回每个月、每年的最后日期?
我尝试过使用 Max 的公式,但无法完全理解。不幸的是,没有 MaxIf() 函数,理论上可以工作。这是我修改过的东西,
=INDEX(MAX(Day),MATCH(C22&MONTH(DATEVALUE($B23&" 1")),Year&Months,0))
,其中c22 是“2007”,B23 是“一月”
编辑:Here's a screenshot 如果它更容易一点。我正在尝试返回每年每个月最后一天的“犯罪”数字。
编辑 2:抱歉,如果我不清楚 - 日期将 必然遵循日历。数据基本上来自股票交易,周末和一些随机日子不开放。因此,我需要使用文档中的日期来确定最后一天,我不能仅仅依靠每个月的真实最后一天(根据日历)。
因此,我不能单独使用date 或EODate() 或edate。我也知道有一种方法可以使用date 并设置假期,并且只使用工作日。这也不太可能完全奏效,因为我不知道要添加哪些假期。
编辑 3:临时解决方案:
同时,我所做的是在月/年/日列表中删除,并删除了所有行除了最后一个日期。所以在我的上表中,我删除了直到12 2009 31 的行,然后删除了直到1 2010 31 的下一行,等等。然后我基于此创建了一个table,并使用Vlookup 来获取最后一天。 (Here's a screenshot)。这很笨拙,但有效。不过,我仍然对公式答案非常感兴趣,我可以用 VBA 做到这一点我只是很惊讶它这么复杂:O
【问题讨论】:
-
如果您有 Excel 2003,EOMONTH 公式将需要添加分析工具包,替代方法是
=DATE(B1,A1+1,0)(下个月的第 0 天)。
标签: excel-formula