2017-10-19 113 views
0

因此,我有一個表格,第一列中有幾個模塊,第二列中列出了該模塊中存在的不同進程。它看起來是這樣的:具有多個值的Vlookup

IMAGE

現在我已經創建了獨特的獨特模塊的數據驗證列表,所以用模塊A,模塊B和模塊C 列表當我選擇從一個模塊該列表中,我希望屬於該模塊的所有進程都顯示在單獨單元格的下拉列表旁邊。如果這些流程出現在彼此之下,這將是一個'很好的'。

我已經嘗試過各種索引和vlookup等的東西,但我找不到解決的辦法。

回答

0

如果您有Office Excel中365然後用這個數組公式:

=TEXTJOIN(",",TRUE,IF($A$2:$A$7 = D2,$B$2:$B$7,"")) 

這是一個數組公式並需要被證實退出編輯模式時,按Ctrl-Shift鍵,Enter鍵。如果正確完成,那麼Excel將在公式周圍放置{}

enter image description here


如果您沒有Office 365中的Excel,然後把這個代碼附加到工作簿模塊中,並如上所述使用。

Function TEXTJOIN(delim As String, skipblank As Boolean, arr) 
    Dim d As Long 
    Dim c As Long 
    Dim arr2() 
    Dim t As Long, y As Long 
    t = -1 
    y = -1 
    If TypeName(arr) = "Range" Then 
     arr2 = arr.Value 
    Else 
     arr2 = arr 
    End If 
    On Error Resume Next 
    t = UBound(arr2, 2) 
    y = UBound(arr2, 1) 
    On Error GoTo 0 

    If t >= 0 And y >= 0 Then 
     For c = LBound(arr2, 1) To UBound(arr2, 1) 
      For d = LBound(arr2, 1) To UBound(arr2, 2) 
       If arr2(c, d) <> "" Or Not skipblank Then 
        TEXTJOIN = TEXTJOIN & arr2(c, d) & delim 
       End If 
      Next d 
     Next c 
    Else 
     For c = LBound(arr2) To UBound(arr2) 
      If arr2(c) <> "" Or Not skipblank Then 
       TEXTJOIN = TEXTJOIN & arr2(c) & delim 
      End If 
     Next c 
    End If 
    TEXTJOIN = Left(TEXTJOIN, Len(TEXTJOIN) - Len(delim)) 
End Function 

爲了讓他們在不同的細胞中一個低於其他使用此公式中的第一個單元格出現抄下足以覆蓋最長的名單:

=IFERROR(INDEX(B:B,AGGREGATE(15,6,ROW($A$2:$A$7)/($A$2:$A$7=$D$2),ROW(1:1))),"") 

enter image description here

+0

感謝您的快速反應,但我希望這些過程出現在單獨的單元格中,對我來說,最好的方式是,如果它們出現在彼此之下。 –

+0

然後這就是你應該說的在你原來的帖子裏。 –

+0

@NickKuipers查看修改 –