gpt4 book ai didi

excel - 如何在单个单元格中使用等于和多个 Vlookup

转载 作者:行者123 更新时间:2023-12-04 22:28:22 25 4
gpt4 key购买 nike

我在工作表 1 中为城市创建了一个多选下拉列表,与下拉列表关联的邮政编码在工作表 2 中。
这就是我的工作表 2 的外观。

enter image description here

1.) 允许用户从下拉列表中选择多个城市。用户选择城市后,我想在一个单元格中显示所选城市和相关的邮政编码。例如如果用户从下拉列表中选择 Sion 和 Dadar,那么在下拉列表的正下方,用户应该能够看到类似的内容。

enter image description here

在 Vlookup 的帮助下,我可以检索其中一个值,也无法在单个单元格中显示等号。

2.) 我还使用互联网上的 VBA 代码进行多项选择和删除。该代码工作正常,但我想对其进行一些更改。就像当用户选择两个城市时,值会填充在以“逗号”分隔的下拉单元格中。我希望每次第二个值都放在下一行,但要保持在同一个单元格中,并动态调整行高,并在顶部和底部留下一些边距。我是 VBA 新手,不知道如何在下一行得到它。
这就是它目前的样子。

enter image description here

但不是上面,我希望它看起来像这样

enter image description here

这是我使用的 VBA 代码。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim xRng As Range
Dim xValue1 As String
Dim xValue2 As String
If Target.Count > 1 Then Exit Sub
On Error Resume Next
Set xRng = Me.Range("J2, K2,L2,M2,N2")
If xRng Is Nothing Then Exit Sub
Application.EnableEvents = False
If Not Application.Intersect(Target, xRng) Is Nothing Then
xValue2 = Target.Value
Application.Undo
xValue1 = Target.Value
Target.Value = xValue2
If xValue1 <> "" Then
If xValue2 <> "" Then
If InStr(1, xValue1, xValue2 & ",") > 0 Then
xValue1 = Replace(xValue1, xValue2 & ", ", "") ' If it's in the middle with comma
Target.Value = xValue1
GoTo jumpOut
End If
If InStr(1, xValue1, ", " & xValue2) > 0 Then
xValue1 = Replace(xValue1, ", " & xValue2, "") ' If it's at the end with a comma in front of it
Target.Value = xValue1
GoTo jumpOut
End If
If xValue1 = xValue2 Then ' If it is the only item in string
xValue1 = ""
Target.Value = xValue1
GoTo jumpOut
End If
Target.Value = xValue1 & ", " & xValue2
End If
jumpOut:
End If
End If
Application.EnableEvents = True
End Sub

最佳答案

选择公式 » 定义的名称 » 名称管理器

将引用:公式替换为以下公式:
enter image description here
=OFFSET(查找!$A$2,0,0,COUNTA(查找!$A:$A)-1)

您现在可以疯狂地在优先级列表中添加和删除值,并且下拉列表将具有更新的值,而无需额外的努力!

分解 OFFSET 公式的用法(以 List_Priority 为例):

  • Lookups!$A$2:从名为“Lookups”的工作表上的单元格 $A$2 开始,即
    列表中的第一个值
  • 0:留在同一行(所以仍然在
    $A$2)
  • 0:留在同一列(因此,仍然是 $A$2)
  • COUNTA(Lookups$A:$A)-1:计算A列中的单元格数
    有值,然后减去 1(标题单元格:“优先级”);捕获
    一个那么高的区域,从当前的单元格开始
    “选定”($A$2)

  • 添加从属下拉列表
  • 在 DataEntry 表上,选择单元格 E6。
  • 在功能区上,单击数据选项卡,然后单击数据验证。
  • 从允许下拉列表中,选择列表。
  • 在 Source 框中,键入等号和 INDIRECT 函数,
    引用生产类型列中的第一个数据单元格:...
  • 单击确定。

  • 将代码放在工作表查找上
       Private Sub Worksheet_Change(ByVal Target As Range)
    On Error Resume Next
    If Not Intersect(Target, Range("E6")) Is Nothing And Target.Cells.Count = 1 Then
    Application.EnableEvents = False
    If Len(Target.Offset(1, 0)) = 0 Then ' (1,0) down direction (0,1) right
    Target.Offset(1, 0) = Target ' (1,0) down direction (0,1) right
    Else
    Target.End(xlDown).Offset(1, 0) = Target ' (1,0) down direction (0,1) right
    End If
    Target.ClearContents
    Application.EnableEvents = True
    End If
    End Sub

    关于excel - 如何在单个单元格中使用等于和多个 Vlookup,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55514657/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com