在Excel中,我想遍历两个下拉列表,使用VBA运行所有可能的组合
我的目标是拥有一个Excel宏。 在Excel中,我想遍历两个下拉列表,使用VBA运行所有可能的组合。在Excel中,我想遍历两个下拉列表,使用VBA运行所有可能的组合,excel,vba,loops,Excel,Vba,Loops,我的目标是拥有一个Excel宏。 在Excel中,我想遍历两个下拉列表,使用VBA运行所有可能的组合。 问题是必须手动遍历下拉列表。 第二个下拉列表依赖于第一个下拉列表。 第一个下拉列表是三种类型的车辆:福特、丰田和马自达。 第二个下拉列表是维修站点:福特经销商、丰田经销商、马自达经销商、通用维修车间A和通用维修车间B。 第二个依赖列表是福特经销商只能维修福特;丰田经销商只能维修丰田。马自达经销商只能维修马自达。一般维修车间A和一般维修车间B可以维修任何类型的车辆。 实际问题的数据集要大得多,我
问题是必须手动遍历下拉列表。
第二个下拉列表依赖于第一个下拉列表。 第一个下拉列表是三种类型的车辆:福特、丰田和马自达。 第二个下拉列表是维修站点:福特经销商、丰田经销商、马自达经销商、通用维修车间A和通用维修车间B。 第二个依赖列表是福特经销商只能维修福特;丰田经销商只能维修丰田。马自达经销商只能维修马自达。一般维修车间A和一般维修车间B可以维修任何类型的车辆。 实际问题的数据集要大得多,我必须使用Excel来解决这个问题 我试着用两个四圈。但是有很多组合我不想出现
sub test()
Dim i as Integer
Dim j as Integer
For i =1 to 3
Next i
For j=1 to 5
Next j
End Sub()
假设下拉列表是表单控件,下面将执行您想要的操作
Sub AutoIterate()
Dim i As Long, j As Long
Dim cmb1 As ControlFormat, cmb2 As ControlFormat
Set cmb1 = ActiveSheet.Shapes("Drop Down 1").ControlFormat 'change the worksheet and the combobox name to those that fit for you.
Set cmb2 = ActiveSheet.Shapes("Drop Down 2").ControlFormat
For i = 1 To cmb1.ListCount
For j = 1 To cmb2.ListCount
If (cmb2.List(j) Like "*" & cmb1.List(i) & "*") Or (cmb2.List(j) Like "*General*") Then
Debug.Print cmb1.List(i) & " - " & cmb2.List(j)
End If
Next
Next
Set cmb1 = Nothing
Set cmb2 = Nothing
End Sub
请记住,如果:
- cmb2中的每个官方店铺都包括与cmb1中完全相同的公司(区分大小写)
- cmb2中的每个通用车间都有“通用”一词(区分大小写)
否则,只需相应地调整If语句。只需在循环中添加一个测试。您也可以按照此操作获取更多提示。另一个选项是创建相关下拉列表,具体取决于您希望如何处理此信息。