![](/img/trans.png)
[英]How to Return Multiple Match Values in Excel Using INDEX-MATCH and the to sum them up
[英]Excel Formula to display multiple values using Index-Match
我有一大堆數據(大約50x2000),基本上采用下面的形式,盡管數據集如上所述。
DistrictNo LocationA LocationB LocationC
----------- --------- --------- ---------
0001 L1 L2 L3
0002 L1 L4
0003 L1 L5 L6
0004 L2
每個區可以具有任意數量的位置,並且同一位置可以位於任意數量的區中,但是DistrictNo將始終是唯一的。
我需要一個公式(或VBA),例如,當將“ L1”輸入到單元格中時,將返回一個包含0001、0002、0003和0004的列表,當輸入“ L2”時將返回0001和0004以及輸入“ L5”或“ L6”僅返回0003。位置所在的列無關緊要,我只需要該行。
目前,我為每一列使用多個MATCH公式,然后在MATCH公式返回的行上使用VLOOKUP,但是問題是在上述數據集上,如果輸入L1,它僅返回0001,因為MATCH僅在第一個值,盡管如果輸入L2,它將返回0001和0004,因為它們在單獨的列中。
下面的UDF將執行此操作。 :
Public Function DistNo(Rng As Range, crit As String, k As Long) As String
Dim rngArr() As Variant
Dim i As Long, j As Long, h As Long
h = 1
rngArr = Rng
For i = LBound(rngArr, 1) To UBound(rngArr, 1)
For j = LBound(rngArr, 2) + 1 To UBound(rngArr, 2)
If rngArr(i, j) = crit Then
If h = k Then
DistNo = rngArr(i, 1)
Exit Function
Else
h = h + 1
Exit For
End If
End If
Next j
Next i
DistNo = CVErr(xlErrNA)
End Function
將此放置在工作簿附帶的模塊中。 不要輸入工作表代碼或ThisWorkbook代碼:
然后,您可以將其稱為普通公式:
=IFERROR(DistNo($A$2:$D$5,$F$2,ROW(1:1)),"")
並根據需要向下復制。
這將使用第一列作為返回值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.