求大神,excel函数解决,叩谢?
EXCEL定位最后一个有数字的日子(LOOKUP、OFFSET、ROW)
方法一:
解释数据内部含义更容易理解需求,一句话就是需要定位最后一个有数字的日子,效果如下图:
添加辅助列能解决,就不用引入VBA了,公式文本为:
=LOOKUP(1,0/OFFSET(A1,1,LOOKUP(1,0/(B35:M35),ROW(1:12)),31,1),A2:A32)
/LOOKUP(1,0/(B35:M35),B33:M33)
分母是有数字的最大的月份的天数,用这个公式类似可以写LOOKUP(1,0/(B35:M35),ROW(1:12))计算最大有数月份,然后使用OFFSET定位它的列,再用前面LOOKUP的套路寻找本月最后一个有数字的日子。
方法二:
在N34单元格输入以下公式
=LOOKUP(1,0/(OFFSET(A2:A32,,SUMPRODUCT((B2:M32<>"")*1))<>""),A2:A32)/OFFSET(A33,,SUMPRODUCT((B2:M32<>"")*1))
详见附图示例
方法三:
如果能加个辅助行,就行了( 这行数字可以设置成白色或设置单元格格式隐藏)
1、辅助行
B34公式:=SUM(B2:B32)
公式向右复制
2、设置N34公式
N34=LOOKUP(1,0/(OFFSET($A$1,,LOOKUP(1,0/(A34:M34>0),COLUMN(A34:M34))-1,31,1)>0),ROW(A1:A32))-1)/INDEX(A33:M33,LOOKUP(1,0/(A34:M34>0),COLUMN(A34:M34)))
首先要表扬一下题主,上这样的图数据结构比较清晰、问题描述也清楚,很方便回答问题!
你的问题只要在N34单元格输入数组公式:
=LOOKUP(4^8,OFFSET(A1:A31,1,MAX(IF(B2:M32>0,COLUMN(A1:L1),0))))/INDEX(B33:M33,MAX(IF(B2:M32>0,COLUMN(A1:L1),0)))
即可得到你想要的结果了……
注意:数组公式!必须是粘贴或者输入上面的公式后同时按CTRL+SHIFT+ENTER这3个键结束,否则公式无效的!
附带送你一个B33的公式:
=DAY(DATE(2021,COLUMN(B1),0))
或者是:
=DAY(EOMONTH(DATE(2021,COLUMN(A1),1),0))
复制并右拉,即可得到图上的数值了,哈……