[英]How may i use VlookUp with approximate date ranges?
我有这个数据。
代码 | 求。 日期 | 结束日期 | Class |
---|---|---|---|
54 | 01/03/2021 | 10/10/2020 | 166 |
54 | 11/10/2021 | 31/12/9999 | 322 |
102 | 10/04/2020 | 31/08/2021 | 180 |
102 | 01/09/2021 | 2022 年 6 月 30 日 | 190 |
102 | 01/07/2022 | 31/12/9999 | 200 |
我需要找到这个范围的 de class
102 | 01/05/2021 | 31/05/2021
答案是 190,因为在数据的第四个范围内。但我需要知道如何使这种 Vlookup 与近似日期和代码匹配作为第二个条件。 我尝试使用 Vlookup 和 Match,但没有得到中间优越值的结果。
希望您能够帮助我。
我试图将 Code 与 Beg 连接起来。 约会并使用 VlookUp 和 AND 但没有成功。
如果我理解正确的话......
F1、G1、H1 列是要搜索的条件
Sub test()
Dim rgData As Range: Dim rg As Range
Dim rgBeg As Date: Dim rgEnd As Date
Dim dBeg As Date: Dim dEnd As Date
Dim rgCod As Integer
Set rgData = Range("A2", Range("A" & Rows.Count).End(xlUp))
rgCod = Range("F1").Value
rgBeg = Range("G1").Value
rgEnd = Range("H1").Value
With rgData
.Replace rgCod, True, xlWhole, , False, , False, False
Set rg = .SpecialCells(xlConstants, xlLogical).Offset(0, 1)
.Replace True, rgCod, xlWhole, , False, , False, False
End With
For Each cell In rg
dBeg = cell.Value: dEnd = cell.Offset(0, 1).Value
If rgBeg > dBeg And rgEnd < dEnd Then MsgBox cell.Offset(0, 2): Exit For
Next
End Sub
但是消息框将显示结果 180,因为 1-May-21 到 31-May-21 在 10-Apr-20 到 31-Aug-21 的范围内。
该代码只是创建一个包含要搜索的代码的范围(在本例中为:102),通过将“102”替换为 TRUE,将具有 TRUE 值的单元格设置为 rg 变量,然后将“102”从 TRUE 放回。
然后它循环到 rg 变量中的每个单元格,将 dBeg 作为开始日期,将 dEnd 作为结束日期。 然后它比较 rgBeg 是否大于 dBeg 和 rgEnd 是否小于 dEnd... 然后 msgbox 显示结果是循环的 cell.offset(0,2) 值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.