繁体   English   中英

我如何使用具有大致日期范围的 VlookUp?

[英]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) 值。

如果您有 Excel 365 或 Excel 2021,则根本不需要 VBA - 只需使用过滤器 function。

假设您的表格左上角在 A1 上,而您的“搜索条件”在 F1:H1 中,那么在I1中输入的以下公式将为您找到 class:

=FILTER(D:D,(G1>=B:B)*(H1<=C:C)*(A:A=F1))

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM