求Excel中用match函数查找的改进方法

来源:百度知道 编辑:UC知道 时间:2024/07/03 02:31:08
我要计算一支股票的逐日回报率,即(今天的价格-昨天的价格)/(昨天的价格),遇到停牌时取上一个不为停牌时的价格来算。要在excel中用函数实现这个如何解决?
比如一周的收盘价数据为:(从A1至A7)
2.5 2.8 停 停 3 停 3.2
其中的问题在于解决连续停牌与间隔停牌

我的思路是先判断当天是否停,不停时看前一天,前一天停牌时,考虑到可以连续停几天,于是用index与match来定位。公式如下:
=if(A2="停",clean(""),if(A1="停",(A2-Index(A1:A7,,match("停",A1:A7,-1)-1))/Index(A1:A7,,match("停",A1:A7,-1)-1),(A2-A1)/A1))

这样做的可以解决连续停牌,但对于间隔停牌,即要算最后一天回报率时=(3.2-3)/3,用这个方法match找出来的停牌是第三天的停牌,于是index找出来的价格是第二天的2.8元,不是第5天的3元。

请问如何解决???

试试这个公式。
=IF(A2="停","",(A2-INDEX($A$1:A2,LARGE(($A$1:A2<>"停")*ROW($1:2),2)))/INDEX($A$1:A2,LARGE(($A$1:A2<>"停")*ROW($1:2),2)))
是数组公式,按Ctrl+Shift+Enter结束公式输入,向下复制公式。

找到最后一个停牌是不是就可以了?

=MATCH("组",A1:A7)