我正在研究大约400家公司的股票每日市值数据。每家公司的数据范围从2000年到2016年。但是,我想在6月的最后一个日期和12月的最后一天选择市值。此外,这些最后日期并不总是意味着月末日期。例如;去年12月,有一家公司在12月14日上市。
再次总结一下我的问题,我想选择6月份的最后一个“可用”市值和从2000年到2016年12月份的最后一个市值。
请帮助我,或者指导我解决这个问题。由于可用值的最后日期并不意味着月末值,我想我不能使用月末公式。查找功能看起来也不可行。
我再次感谢您提供的任何建议。提前谢谢。
样本数据
Date - Closing - Market Capitalization
2-Jan - 23.5 - 177,282,000
1-Jan - 22 - 177,282,000
31-Dec - 33 - 177,282,000
30-Dec - 33 - 177,282,000
4-Jul - 31 - 120,960,000
2-Jul - 31.1 - 113,400,000
1-Jul - 31 - 113,400,000
28-Jun - 30 - 113,400,000
27-Jun - 30 - 113,400,000
26-Jun - 30.1 - 113,400,000
答案 0 :(得分:1)
潜在的解决方案。我有一个小小的警告,我将在最后得到它。
让我们在E栏中的一天生成一个我们想要搜索的目标日期列表。它们将是6月和12月的结束日期。每行将前一个日期提前6个月。
在E2中,我们将播种日期放在:
=EOMONTH(DATE(2000,6,1),0)
在E3中,我们将列表生成器放入如下,并根据需要进行复制:
=EOMONTH(E2,6)
在G2中,我们使用以下公式并根据需要进行复制:
=IFERROR(INDEX($C$2:$C$11,AGGREGATE(15,6,ROW($A$2:$A$11)/((MONTH($A$2:$A$11)=MONTH(E2))*(YEAR($A$2:$A$11)=YEAR(E2))),1)-1),"NOT FOUND")
需要注意的是,市值必须至少在6月或12月发生。在这几个月之外不会被关注。
如果您想显示您所提取的数字对应的日期,因为它实际上不是该月的最后一天,您可以将该日期放在F栏中:
=IFERROR(INDEX($A$2:$A$11,AGGREGATE(15,6,ROW($A$2:$A$11)/((MONTH($A$2:$A$11)=MONTH(E2))*(YEAR($A$2:$A$11)=YEAR(E2))),1)-1),"NOT FOUND")
概念证明
答案 1 :(得分:1)
您可以使用此数组公式:
=INDEX($C$2:$C$11,MATCH(TRUE,(MIN(IF($A$2:$A$11<=EOMONTH(E6,0),EOMONTH(E6,0)-$A$2:$A$11))=IF($A$2:$A$11<=EOMONTH(E6,0),EOMONTH(E6,0)-$A$2:$A$11)),0))
作为数组公式,必须使用Ctrl-Shift-Enter确认。如果正确完成,那么excel会将{}
放在公式周围。
如果您能够按升序对日期进行排序,那么您可以使用此非数组公式:
=INDEX($C$2:$C$11,MATCH(EOMONTH(E6,0),$A$2:$A$11,1))