动态Excel下拉框? (使用另一个表中的选定值)

时间:2013-06-14 11:44:29

标签: excel drop-down-menu

我需要帮助在Excel中实现多个动态下拉框:

  • 在表1上有一张填充表
  • 在工作表2上有一个空表,其中包含相同的列标题
  • 在表2中,除最后一列
  • 外,用户填写表格
  • 在最后一列的表2中,每行应该有一个保管箱。此保管箱必须包含表1中同一列中的一组值。选择应仅考虑表1中与dropbox所在的表2行中已填充的字段匹配的行。见下面的例子。

整个过程不需要额外的用户交互,除了Dropbox之外,还应该允许插入任意值。


实施例

表1

品牌| CPU | MODEL
brand1 | cpu1 | modelX
brand1 | cpu1 | modelY
brand1 | cpu2 | modelZ
brand2 | cpu2 | modelH brand2 | cpu2 | modelK

表2

品牌| CPU | MODEL
brand1 | cpu1 | [DROPBOX1]
brand2 | cpu2 | [DROPBOX2]

说明

[DROPBOX1]应该包含modelX和modelY
[DROPBOX2]应该是contian modelH和modelK


我设法通过dedcated表中的命名区域创建一个这样的dropbox,但就是这样。对于任意数量的行,我不能使用相同的系统。 整个事情尖叫Access,但实现细节来自上面所以Excel是(谢谢管理)。

感谢。

2 个答案:

答案 0 :(得分:0)

我在跟踪你时遇到了一些麻烦,但似乎快速设置这个玩具将使用数据选项卡上的数据验证。

  1. 从数据选项卡中选择数据验证
  2. 选择数据验证
  3. 从允许中选择:"列表"
  4. 在源代码下,有两种方法可以继续......    您可以突出显示要在下拉列表中看到的列范围。    您可以在列/行名称的左上角突出显示列范围,突出显示并重命名,并使用该名称作为源。

    我通常会创建一个额外的标签,隐藏/保护它,然后从那里创建我的下拉表。

答案 1 :(得分:0)

我有幸在第一个欧盟MVP Bill Manville先生的微软论坛上获得支持 这是解决问题的宏:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Dim iCol as Integer
  Dim rTable1 As Range
  If Target.Cells.Count<>1 Then Exit Sub
  Set rTable1=ThisWorkbook.Sheets("Sheet1").Range("A1").CurrentRegion
  With Me.Range("A1").CurrentRegion
    If Target.Column<>.Columns.Count Then Exit Sub
    rTable1.AutoFilter
    For iCol = 1 To .Columns.Count-1
       rTable1.AutoFilter iCol, Me.Cells(Target.Row, iCol)
    Next
    If rTable1.Columns(1).SpecialCells(xlVisible).Count>1 Then
      rTable1.Columns(.Columns.Count).Offset(1).Resize(rTable1.Rows.Count-1).SpecialCells(xlVisible).Name = "ValidationList"
    Else
      MsgBox "The combination in this row is not matched"
    End If
    rTable1.AutoFilter
  End With
End Sub

他也非常友善地提供working example 要使这些工作必须订购源表,因为数据验证只考虑在多个部分中命名范围的第一部分。