Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Excel中,我想遍历两个下拉列表,使用VBA运行所有可能的组合_Excel_Vba_Loops - Fatal编程技术网

在Excel中,我想遍历两个下拉列表,使用VBA运行所有可能的组合

在Excel中,我想遍历两个下拉列表,使用VBA运行所有可能的组合,excel,vba,loops,Excel,Vba,Loops,我的目标是拥有一个Excel宏。 在Excel中,我想遍历两个下拉列表,使用VBA运行所有可能的组合。 问题是必须手动遍历下拉列表。 第二个下拉列表依赖于第一个下拉列表。 第一个下拉列表是三种类型的车辆:福特、丰田和马自达。 第二个下拉列表是维修站点:福特经销商、丰田经销商、马自达经销商、通用维修车间A和通用维修车间B。 第二个依赖列表是福特经销商只能维修福特;丰田经销商只能维修丰田。马自达经销商只能维修马自达。一般维修车间A和一般维修车间B可以维修任何类型的车辆。 实际问题的数据集要大得多,我

我的目标是拥有一个Excel宏。 在Excel中,我想遍历两个下拉列表,使用VBA运行所有可能的组合。
问题是必须手动遍历下拉列表。
第二个下拉列表依赖于第一个下拉列表。 第一个下拉列表是三种类型的车辆:福特、丰田和马自达。 第二个下拉列表是维修站点:福特经销商、丰田经销商、马自达经销商、通用维修车间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语句。

只需在循环中添加一个测试。您也可以按照此操作获取更多提示。另一个选项是创建相关下拉列表,具体取决于您希望如何处理此信息。