我有一个键,其中包含“我要查找的值”,“数据”以及它们所属的日期范围的键。
我如何创建一个函数或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的初学者,将不胜感激。
我在另一个论坛上看到了此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
答案 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