我需要帮助在Excel中实现多个动态下拉框:
整个过程不需要额外的用户交互,除了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是(谢谢管理)。
感谢。
答案 0 :(得分:0)
我在跟踪你时遇到了一些麻烦,但似乎快速设置这个玩具将使用数据选项卡上的数据验证。
在源代码下,有两种方法可以继续...... 您可以突出显示要在下拉列表中看到的列范围。 您可以在列/行名称的左上角突出显示列范围,突出显示并重命名,并使用该名称作为源。
我通常会创建一个额外的标签,隐藏/保护它,然后从那里创建我的下拉表。
答案 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 要使这些工作必须订购源表,因为数据验证只考虑在多个部分中命名范围的第一部分。