在Excel中根据2列获取他们的名字

Excel 2013与VBA。 我有一个combobox,可以让我selectMonTueWed ,等等。
如果我selectMon ,我希望星期一有RD的所有代理都显示在列表框中。 在这个例子中,我可以显示它,但它只是指单列,我想也可以使用另一列。

截图

这是我的代码:

 Private Sub cmbRestDay_Change() Dim x, dict Dim i As Long Dim cnt As Long Set mySheet = Sheets("Dashboard") ListBox1.Clear x = mySheet.Range("A1").CurrentRegion.Value Set dict = CreateObject("Scripting.Dictionary") If Application.CountIf(mySheet.Columns(2), cmbRestDay.Value) > 0 Then For i = 2 To UBound(x, 1) If x(i, 2) = cmbRestDay.Value Then dict.Item(x(i, 1)) = "" End If Next i ListBox1.List = dict.keys Else ListBox1.AddItem "Match not found" End If End Sub Private Sub UserForm_Initialize() cmbRestDay.Clear With cmbRestDay .AddItem ("Mon") .AddItem ("Tue") .AddItem ("Wed") .AddItem ("Thu") .AddItem ("Fri") .AddItem ("Sat") .AddItem ("Sun") End With cmbMyRD.Clear With cmbMyRD .AddItem ("Mon") .AddItem ("Tue") .AddItem ("Wed") .AddItem ("Thu") .AddItem ("Fri") .AddItem ("Sat") .AddItem ("Sun") End With End Sub 

使用Or逻辑运算符:

 If Application.CountIf(mySheet.Columns("B:C"), cmbRestDay.Value) > 0 Then For i = 2 To UBound(x, 1) If x(i, 2) = cmbRestDay.Value Or x(i, 3) = cmbRestDay.Value Then 
 Private Sub cmbRestDay_Change() Dim x As Integer Set mySheet = Sheets("Dashboard") ListBox1.Clear If Application.CountIf(mySheet.Range("A:B"), "*" & cmbRestDay.Value & "*") > 0 Then For x = 2 To Application.CountA(mySheet.Columns(1)) If mySheet.Cells(x, 2) = cmbRestDay.Value Or mySheet.Cells(x, 3) = cmbRestDay.Value Then ListBox1.AddItem (mySheet.Cells(x, 1)) End If Next Else ListBox1.AddItem ("Match not found") End If End Sub