0
因此,我有一个表格,第一列中有几个模块,第二列中列出了该模块中存在的不同进程。它看起来是这样的:具有多个值的Vlookup
现在我已经创建了独特的独特模块的数据验证列表,所以用模块A,模块B和模块C 列表当我选择从一个模块该列表中,我希望属于该模块的所有进程都显示在单独单元格的下拉列表旁边。如果这些流程出现在彼此之下,这将是一个'很好的'。
我已经尝试过各种索引和vlookup等的东西,但我找不到解决的办法。
因此,我有一个表格,第一列中有几个模块,第二列中列出了该模块中存在的不同进程。它看起来是这样的:具有多个值的Vlookup
现在我已经创建了独特的独特模块的数据验证列表,所以用模块A,模块B和模块C 列表当我选择从一个模块该列表中,我希望属于该模块的所有进程都显示在单独单元格的下拉列表旁边。如果这些流程出现在彼此之下,这将是一个'很好的'。
我已经尝试过各种索引和vlookup等的东西,但我找不到解决的办法。
如果您有Office Excel中365然后用这个数组公式:
=TEXTJOIN(",",TRUE,IF($A$2:$A$7 = D2,$B$2:$B$7,""))
这是一个数组公式并需要被证实退出编辑模式时,按Ctrl-Shift键,Enter键。如果正确完成,那么Excel将在公式周围放置{}
。
如果您没有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))),"")
感谢您的快速反应,但我希望这些过程出现在单独的单元格中,对我来说,最好的方式是,如果它们出现在彼此之下。 –
然后这就是你应该说的在你原来的帖子里。 –
@NickKuipers查看修改 –