Here's a start for you..
I had to change your sheet layout to something that likes being manipulated better.
It will..
1. Populate your 3 combos with sorted unique values from the required columns in Sheet1.
2. Auto filter those columns when you press the button by the values selected in the combos.
I guess then you can do whatever you want with the filtered results..
There's probably more elegant ways of doing it.. but it will give you a start and it will work.
Private Sub cmdBestPay_Click()
With Range("A5").CurrentRegion
.AutoFilter 1, cboMobilebrand.Value
.AutoFilter 6, ">0", xlAnd, "<=" & cboUKMinutes.Value
.AutoFilter 8, ">0", xlAnd, "<=" & cboUKTexts.Value
End With
End Sub
Private Sub UserForm_Initialize()
Dim it, x0
With CreateObject("scripting.dictionary")
For Each it In Sheets("Sheet1").Range("A6:A" & Sheets("sheet1").Range("A" & Rows.Count).End(xlUp).Row)
x0 = .Item(it.Value)
Next
cboMobilebrand.List = .keys
.RemoveAll
For Each it In Sheets("Sheet1").Range("H6:H" & Sheets("sheet1").Range("H" & Rows.Count).End(xlUp).Row)
x0 = .Item(it.Value)
Next
Range("Q1").Resize(.Count).Value = Application.Transpose(.keys)
Range("Q1").Resize(.Count).Sort [Q1], 1
cboUKTexts.List = Range("Q1:Q" & Range("Q" & Rows.Count).End(xlUp).Row).Value
.RemoveAll
Columns(17).ClearContents
For Each it In Sheets("Sheet1").Range("F6:F" & Sheets("sheet1").Range("F" & Rows.Count).End(xlUp).Row)
x0 = .Item(it.Value)
Next
Range("Q1").Resize(.Count).Value = Application.Transpose(.keys)
Range("Q1").Resize(.Count).Sort [Q1], 1
cboUKMinutes.List = Range("Q1:Q" & Range("Q" & Rows.Count).End(xlUp).Row).Value
Columns(17).ClearContents
End With
End Sub
Private Sub UserForm_Terminate()
If Sheets("Sheet1").AutoFilterMode = True Then Sheets("Sheet1").AutoFilterMode = False
End Sub