excel面板数据整理

Excel有两张表,sheet1和sheet2.
Sheet1有744个股票代码,每个股票代码有从2009-01-05到2011-12-30每天的个股回报率和指数回报率两个指标

Sheet2也有一样的744个股票代码,每个股票代码有至少一个的首次公告日期(有些公告日有多个)

要求是:

比如说,第一个股票代码600004,首次公告日是2010-12-28。以首次公告日为基准,在sheet1中筛选出这个股票包括公告日在内的前90天和后30天的每天的个股回报率和指数回报率两个指标。也就是说,把90天以前和30天以后的两个指标都删除,sheet1每只股票只保留前90天到后30天的两个指标。

请问怎么样的excel函数能够实现对面板数据的快速筛选,不胜感谢

在Sheet1的E2输入

=IF(AND(B2>=VLOOKUP(A2,Sheet2!A:B,2,)-90,B2<=VLOOKUP(A2,Sheet2!A:B,2,)+30),"留","")

回车并向下填充(或双击右下角填充柄一步到位)。

选E列筛选“留”。


我把首次公告日的前后日期改为前6天~后3天(共10天)做个示范给你看吧:

追问

我按照你给的函数算出来怎么没有显示 留 啊

追答

1、单元格的对齐方式恢复默认(即不要专门设置左对齐、右对齐或居中),再看看你的日期列(B列)是靠左还是靠右?日期格式应该靠右才对,否则就是文本格式,文本格式无法比大小。
2、查看你的两个表格的证券代码列(A列),其证券代码后面会不会多了些空格?若一个有一个没有,就会匹配不到。

追问

谢谢,这个问题解决了。另外还有个问题,如下图:

有什么函数能设置成这样:对于每个股票代码,在F列间隔天数为0记为T+0,之前为T-1,T-2,T-3。。。之后为T+1,T+2,T+3。。。注意间隔天数并没有连续,而T+几需要连续的。最后每个不同股票代码都是这样子

追答

呵呵!够复杂。
F2输入
="T"&TEXT(ROW()-MATCH(1,(A$1:A$1000=A2)*(B$1:B$1000=VLOOKUP(A2,Sheet2!A:B,2,0)),0),"+0;-0")
数组公式,输入后先不要回车,按Ctrl+Shift+Enter结束计算,再向下填充。

温馨提示:答案为网友推荐,仅供参考
相似回答