将项目添加到基于单元格值的dynamic下拉列表

这是一个问题,是否有可能做我想要在Excel中做的。 我有一个像这样的案例表:

在这里输入图像说明

和一个看起来像这样的遭遇forms:

在这里输入图像说明

在遇到工作表,我想做一个下拉列表,只包含分配给特定的个案经理的人的名字。 因此,如果我在CM列中inputSH,则只有“分配的CM”为SH的Caselist表单中的这些情况才会填充到下拉菜单中。

这可能在Excel中做? 感谢您的帮助。

您可以尝试下面给出的代码。 代码假定在工作簿中有两张名为“Encounter”和“CaseList”的工作表。 两张表格的标题都在第一行。 在Encounter表单中,列A包含CM(下拉selectCM),列B将有一个从代码插入的下拉列表,用于select名称,具体取决于列中所选的CM。 A.在CaseList表上,列A是名,列B是姓和列。 C是CM。

当上面提到的所有条件都满足时,将下面的代码放在Encounter Sheet Module中。 为此,请右键单击Encounter Tab – > View Code并将下面给出的代码放到打开的代码窗口中 – >closuresVB编辑器 – >将工作簿保存为Macro-Enabled Workbook。 所以在select一个CM后, A在“相遇表”上,一旦select了列中相应的单元格。 B,代码将在该单元格中创build一个数据validation列表,以便您可以select由列表中的空格分隔的名字和姓氏。 一旦你select一个项目,名字和姓氏将被input在单元格中用逗号分开。

Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.CountLarge > 1 Then Exit Sub Dim sws As Worksheet Dim lr As Long, n As Long, i As Long Dim x, dict Application.ScreenUpdating = False Set sws = Sheets("CaseList") lr = sws.Cells(Rows.Count, "C").End(xlUp).Row x = sws.Range("A2:C" & lr).Value If Target.Column = 2 And Target.Row > 1 Then On Error Resume Next n = Target.Offset(0, -1).Validation.Type If n = 3 Then Set dict = CreateObject("Scripting.Dictionary") For i = 1 To UBound(x, 1) If x(i, 3) = Target.Offset(0, -1).Value Then dict.Item(x(i, 1) & " " & x(i, 2)) = "" End If Next i With Target.Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:=Join(dict.keys, ",") End With End If End If Application.ScreenUpdating = True End Sub Private Sub Worksheet_Change(ByVal Target As Range) If Target.CountLarge > 1 Then Exit Sub If Target.Column = 2 And Target.Row > 1 Then If Target <> "" Then Application.EnableEvents = False Target = WorksheetFunction.Substitute(Target.Value, " ", ", ", 1) Application.EnableEvents = True End If End If End Sub