永发信息网

excel查找并返回最近的一个非空单元格的值

答案:3  悬赏:40  手机版
解决时间 2021-03-01 22:56
excel查找并返回最近的一个非空单元格的值
最佳答案
C1输入:=IF((B1=VLOOKUP(B1,A:A,1))+(MONTH(MIN(INDIRECT("A"&(MATCH(B1,A:A,1)+1)&":A"&(MATCH(B1,A:A,1)+10))))>MONTH(B1)),VLOOKUP(B1,A:A,1),MIN(INDIRECT("A"&(MATCH(B1,A:A,1)+1)&":A"&(MATCH(B1,A:A,1)+10))))
全部回答

C1是要判断的日期,E1输入公式:
=IF(ISERROR(MATCH(C1,A2:A366,0)),IF(MONTH(SMALL(INDIRECT("A"&MATCH(C1,A:A,1)&":A366"),2))>MONTH(C1),TEXT(INDEX(A:A,MATCH(C1,A:A,1)),"YYYY-M-D"),TEXT(SMALL(INDIRECT("A"&MATCH(C1,A:A,1)&":A366"),2),"YYYY-M-D")),"非假期")


关键是要找出比查找日期大一点的那个值(日期)。
先用MATCH的搜索参数1,获得刚好比查找日期小的日期位置。由于搜索区域是整个A列,所以得到的其实就是行号。
用INDIRECT函数定义一个从刚才搜到的比查找日期小一点的行,一直到第366行的区域。再用SMALL函数,在这个区域中找第2小的值,其实就是刚好比查找日期大一点的日期。




如果用以下方法,只可找到查询日期前的一个工作日期,方法是在C1输入公式:
=VLOOKUP(B2,A2:A366,1,TRUE)
即可。如图:



以下是我帮你写一个VBA的程序完全实现你的要求,担心你不会执行宏指令,特设置了一个按键点击即可执行。



源程序:Private Sub CommandButton1_Click()
Dim i As Integer
Dim a As Date
i = 2
Do While Cells(i + 1, 1) <= Cells(2, 2)
    i = i + 1
Loop
a = Cells(i + 1, 1)
If Month(Cells(2, 2)) < Month(a) Then
    Do While Cells(i, 1) = ""
        i = i - 1
        a = Cells(i, 1)
    Loop
End If
Cells(2, 3) = a
End Sub
请加分并采纳我的答案。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
药太苦喝不下怎么办
高帮白鞋加红鞋带配什么颜色得衣服和裤子好看
中国电信全网通手机卖场NO.J0778我想知道这个
四级考试,雷同卷判定.是只看选择题的错误相同
400斤能称多少爱
能从cmd中直接进行汇编编程么
文和友老长沙大香肠(鼓楼路)地址在什么地方,
画眉毛是 黑色,还是 深灰色 比较自然
比利海灵顿的哲学到底说的是什么? 就是简单
请问工地上砌砖工价八五万能块和加气块按定额
【乱】乱什么ABB式两个
安徽专升本考试难吗?一般都是怎么考
把原来的房子拆了改成铁棚是不是违章建筑?
王者荣耀战队赛规则介绍 战队赛怎么打
古昌土猪肉(天宫殿店)地址在哪,我要去那里办
推荐资讯
有二阶因子的探索性因素分析怎么做
老剧院停车场在什么地方啊,我要过去处理事情
急求一篇关于车间生产大干的作文
联想笔记本全名IEYZTUSX4VDSR4R是什么意思
尝来快餐在哪里啊,我有事要去这个地方
【暑假旅游】有什么离江苏南京比较近的旅游地
土地登记证书号和国有土地使用证编号分别是哪
西凤酒价格表〈t10封坛酒〉
鹅肉怎么炒好吃又简单
知道现在的女朋友 以前做过人流 我该怎么办
非常漆这个地址在什么地方,我要处理点事
企业通过网上银行给个人转款怎么做会计分录
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?