所以,我有一个表,在第一列和第二列中有几个模块,该模块中存在不同的进程。它看起来像这样:
现在我已经创建了唯一唯一模块的数据验证列表,因此列出了模块A,模块B和模块C. 当我从该列表中选择一个模块时,我希望属于该模块的所有进程显示在单独的单元格中的下拉列表旁边。如果流程出现在彼此之下,那将是一个“不错的”。
我已尝试使用index和vlookup等进行各种操作,但我找不到解决方法。
答案 0 :(得分:0)
如果您有Office 365 Excel,请使用此数组公式:
{}
这是一个数组公式,需要在退出编辑模式时使用Ctrl-Shift-Enter确认。如果正确完成,那么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
放在公式周围。
如果您没有Office 365 Excel,请将此代码放在工作簿附带的模块中,并按上述方法使用。
=IFERROR(INDEX(B:B,AGGREGATE(15,6,ROW($A$2:$A$7)/($A$2:$A$7=$D$2),ROW(1:1))),"")
要让它们出现在另一个单独的单元格中,请在第一个单元格中使用此公式并将其复制到足以覆盖最长列表:
{{1}}