如何查找介于两个日期之间的值?

时间:2020-03-02 19:59:09

标签: excel vba indexing match vlookup

我有一个键,其中包含“我要查找的值”,“数据”以及它们所属的日期范围的键。

我如何创建一个函数或VBA工具来查找与“我要查找的值”匹配的值以及两个日期之间的间隔?

我还想用逗号分隔输出,因为可以根据日期范围从键中匹配多个值。

我尝试了INDEX函数(我认为我输入的引用有误):

=INDEX($I$3:$I$18,MATCH($I$3:$I$18,K2:L2351,IF(E2>=K$2:K$2351,IF(F2<=K$2:K$2351,IF(Value=K$2:K$2351,1))),0))

我是excel的初学者,将不胜感激。

[enter image description here

我在另一个论坛上看到了此vba,但其中没有包含match / vlookup功能。

    Function SingleCellExtract(LookupValue As String, LookupRange As Range, ColumnNumber As Integer, Char As String)
'Updateby20150824
    Dim I As Long
    Dim xRet As String
    For I = 1 To LookupRange.Columns(1).Cells.Count
        If LookupRange.Cells(I, 1) = LookupValue Then
            If xRet = "" Then
                xRet = LookupRange.Cells(I, ColumnNumber) & Char
            Else
                xRet = xRet & "" & LookupRange.Cells(I, ColumnNumber) & Char
            End If
        End If
    Next
    SingleCellExtract = Left(xRet, Len(xRet) - 1)
End Function

1 个答案:

答案 0 :(得分:0)

最后找到答案,下面是代码:

    Sub Populate_Data()


ActiveSheet.Range("$A$1:$AE$2350").AutoFilter Field:=13, Criteria1:=Array( _
        "S48", "SX3", "P49", "S25", "P28", "T50", "TBF", "TB5"), Operator:=xlFilterValues
    ActiveSheet.Range("$A$1:$AE$2350").AutoFilter Field:=10, Operator:= _
        xlFilterValues, Criteria2:=Array(0, "1/3/2020", 0, "12/31/2019")

Range("J:J,M:M,T:T").SpecialCells(xlCellTypeVisible).Copy

curName = ActiveSheet.Name

updatedsheet = curName + " 2019-2020"

ThisWorkbook.Sheets.Add

ActiveSheet.Name = updatedsheet

Range("B1").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
    False, Transpose:=False

ActiveSheet.Range("A2:A100" & var1a).Formula = _
Replace("=B2-DAY(B2)+1{SOME_VAR}", "{SOME_VAR}", var1a)


ActiveSheet.Range("G1" & var1a).Formula = _
Replace("1/1/2019{SOME_VAR}", "{SOME_VAR}", var1a)


With Range("G1")
.AutoFill Destination:=Range("G1:G13"), Type:=xlFillMonths

End With


Range("H1").FormulaArray = "=TEXTJOIN("","",TRUE,IF($A$1:$A$53=G1,$C$1:$D$53,""""))"
Range("H1:H13").FillDown

ActiveSheet.Range("I1" & var1a).Formula = _
Replace("=SUMIFS($D$2:$D$5,$A$2:$A$5,""=""&G1){SOME_VAR}", "{SOME_VAR}", var1a)

Range("I1:I13").FillDown

Cells.Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

End Sub