excel查找并返回最近的一个非空单元格的值
答案:3 悬赏:40 手机版
解决时间 2021-03-01 22:56
- 提问者网友:你挡着我发光了
- 2021-03-01 18:47
excel查找并返回最近的一个非空单元格的值
最佳答案
- 五星知识达人网友:等灯
- 2021-03-01 19:32
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))))
全部回答
- 1楼网友:神的生死簿
- 2021-03-01 21:56
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小的值,其实就是刚好比查找日期大一点的日期。
- 2楼网友:woshuo
- 2021-03-01 20:29
如果用以下方法,只可找到查询日期前的一个工作日期,方法是在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
请加分并采纳我的答案。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯