【发布时间】:2020-03-02 19:59:09
【问题描述】:
我有一个“我正在尝试查找的值”、我的“数据”以及它们所属的日期范围的键。
如何创建一个函数或 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
【问题讨论】:
-
您要在 G 列中返回什么值?
-
抱歉延迟回复。我试图只用我的关键列 I 中的代码填充 G,但出现在日期范围列 E 和 F 中。这些代码/日期的来源是列 K 和 L。
-
所以这个函数可以工作,但是我怎样才能将匹配函数合并到这个函数中,以便它只显示我的键中的值? =INDEX(P$3:P$2351,SMALL(IF($O$3:$O$2351>=$J$1,IF($O$3:$O$2351
标签: excel vba indexing match vlookup