Excel – 从给定月份的随机最后date获取值

我正在研究大约400家公司的股票每日市值的数据。 每个公司的数据范围从2000年到2016年不过,我想在6月的最后一天和12月的最后一天select市值。 此外,这些最后的date并不总是意味着月份date的结束。 例如; 去年十二月份,一家公司的最后市值已于十二月十四日上市。

为了总结我的问题,我想select6月份最后一个“可用”市值,以及2000年至2016年12月份的最后可用市值。

请帮助我,或给我一个方向来解决这个问题。 作为可用值的最后date并不意味着月末值,我想我不能使用月底公式。 查找function也看起来不切实际。

再次感谢您提供的任何build议。 先谢谢你。

样本数据

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 

数据图片

你可以使用这个数组公式:

 =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会把{}放在公式的周围。

在这里输入图像说明


如果您能够按升序对date进行sorting,那么您可以使用这个非数组公式:

 =INDEX($C$2:$C$11,MATCH(EOMONTH(E6,0),$A$2:$A$11,1)) 

在这里输入图像说明

潜在的解决scheme。 有一个小小的警告,我会在最后。

让我们在E列的日子里生成一个我们想要search的目标date列表。 他们将是六月和十二月的结束date。 每行将提前6个月。

在E2中,我们把播种date放在:

 =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") 

需要注意的是市值必须至less在六月或十二月份发生。 这些月之外不会被看着。

如果你想显示你拉的号码的date,因为它实际上不是一个月的最后一天,你可以把这个date放在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") 

概念validation

概念验证