簡體   English   中英

在Excel中,我想遍歷兩個下拉列表以使用VBA運行所有可能的組合

[英]In Excel, I want to iterate through two drop down lists to run all possible combinations using VBA

我的目標是擁有一個Excel宏。 在Excel中,我想遍歷兩個下拉列表以使用VBA運行所有可能的組合。
問題在於下拉列表必須手動進行遍歷。
第二個下拉列表取決於第一個下拉列表。 第一個下拉列表是3種類型的車輛:福特,豐田和馬自達。 第二個下拉列表是維修站點:福特經銷店,豐田經銷店,馬自達經銷店,一般維修店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語句。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM