簡體   English   中英

Excel公式使用索引匹配顯示多個值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM