Lọc danh sách với điều kiện vào Combo Box (1 người xem)

  • Thread starter Thread starter vnproc
  • Ngày gửi Ngày gửi

Người dùng đang xem chủ đề này

vnproc

Thành viên hoạt động
Tham gia
1/2/11
Bài viết
150
Được thích
6
Chào các bạn

Mình có gặp trường hợp sau mong các bạn giúp cho. Mình muốn lọc trong danh sách và các điều kiện sau đó cho liệt kê lên Combo Box

Cảm ơn nhiều.
 

File đính kèm

Chào các bạn

Mình có gặp trường hợp sau mong các bạn giúp cho. Mình muốn lọc trong danh sách và các điều kiện sau đó cho liệt kê lên Combo Box

Cảm ơn nhiều.

Bạn muốn làm cái gì thì cần nêu cụ thể cái mình cần làm để các thành viên tiện bề giúp đỡ, chứ hỏi nữa chừng "muốn lọc danh sách theo điều kiện và liệt kê lên Combo Box" để làm cái gì? lại đi hỏi tiếp nữa sẽ mất thời gian mà kết quả lại không được như mong muốn.
 
Lần chỉnh sửa cuối:
Chào các bạn

Mình có gặp trường hợp sau mong các bạn giúp cho. Mình muốn lọc trong danh sách và các điều kiện sau đó cho liệt kê lên Combo Box

Cảm ơn nhiều.
Thay đổi tại H2 hoặc I2 để biết thêm chi tiết. Hỏi sao thì giúp vậy nhé.
Mã:
Sub GLL()
   Dim Arr(), I, Dk
   With Sheet1
      .CB.Clear
      Arr = .Range(.Range("A3"), .Range("D65536").End(xlUp)).Value
      Dk = UCase(.[H2].Value & .[I2].Value)
      For I = 1 To UBound(Arr)
         If UCase(Trim(Arr(I, 1)) & Trim(Arr(I, 3))) = Dk Then
           .CB.AddItem Arr(I, 4)
         End If
      Next I
   End With
End Sub
 

File đính kèm

Bạn muốn làm cái gì thì cần nêu cụ thể cái mình cần làm để các thành viên tiện bề giúp đỡ, chứ hỏi nữa chừng "muốn lọc danh sách theo điều kiện và liệt kê lên Combo Box" để làm cái gì? lại đi hỏi tiếp nữa sẽ mất thời gian mà kết quả lại không được như mong muốn.

Các bước trước mình làm được rồi. Chỉ đến bước này thì khong được nên mới lấy nêu vấn đề để các giúp. Cảm ơn bạn.
 
Thay đổi tại H2 hoặc I2 để biết thêm chi tiết. Hỏi sao thì giúp vậy nhé.
Mã:
Sub GLL()
   Dim Arr(), I, Dk
   With Sheet1
      .CB.Clear
      Arr = .Range(.Range("A3"), .Range("D65536").End(xlUp)).Value
      Dk = UCase(.[H2].Value & .[I2].Value)
      For I = 1 To UBound(Arr)
         If UCase(Trim(Arr(I, 1)) & Trim(Arr(I, 3))) = Dk Then
           .CB.AddItem Arr(I, 4)
         End If
      Next I
   End With
End Sub

Cảm ơn bạn. Khi nhập vào H2 hoặc I2 thì code trên thực hiện được. Nhưng khi link từ cell khác đến H2 hoặc I2 thì ComboBox không thực hiện.
Bạn sửa lại code giúp mình với. Cảm ơn nhiều.
 
Cảm ơn bạn. Khi nhập vào H2 hoặc I2 thì code trên thực hiện được. Nhưng khi link từ cell khác đến H2 hoặc I2 thì ComboBox không thực hiện.
Bạn sửa lại code giúp mình với. Cảm ơn nhiều.
Link là link như thế nào. Tôi viết code cho bạn, tôi còn đính kèm cả file lên. Bạn muốn thêm gì, bạn cũng nên chi tiết hơn chứ, tốt nhất là nên có cái file
 

File đính kèm

Paste vào Module code sau
Mã:
Sub GPE()
Dim Dic As Object, Arr, I As Long
Set Dic = CreateObject("Scripting.Dictionary")
With Sheet1
      Arr = .Range("C3", .Range("D65536").End(3)).Value
End With
With Sheet2
    For I = 1 To UBound(Arr)
    If Len(Arr(I, 1)) Then
        If Arr(I, 1) = .ComboBox2.Value Then
            If Not Dic.exists(Arr(I, 2)) Then Dic.Add Arr(I, 2), ""
        End If
    End If
    Next I
      .CB.List = Dic.keys
End With
End Sub

Paste vào sheet2(CHON) 2 code sau:
Mã:
Private Sub ComboBox1_Change()
    GPE
End Sub


Private Sub ComboBox2_Change()
    GPE
End Sub

Nó vẫn chưa đúng bạn à.

Ví dụ : Khi chọn Công ty A ; chọn sản xuất : nó sẽ tương ứng với

[TABLE="width: 275"]
[TR]
[TD="align: left"]Chi phí dây chuyền 1
[/TD]
[/TR]
[TR]
[TD="align: left"]Chi phí dây chuyền 2
[/TD]
[/TR]
[TR]
[TD="align: left"]Chi phí hổ trợ sản xuất
[/TD]
[/TR]
[/TABLE]

- chọn Công ty B ; chọn sản xuất : nó sẽ tương ứng với
[TABLE="width: 275"]
[TR]
[TD="align: left"]Chi phí dây chuyền 1[/TD]
[/TR]
[TR]
[TD="align: left"]Chi phí dây chuyền 2[/TD]
[/TR]
[TR]
[TD="align: left"]Chi phí dây chuyền 3[/TD]
[/TR]
[/TABLE]

Mình đính kèm file lên bạn xem giúp. Cảm ơn
 

File đính kèm

Mã:
Sub GPE()
Dim Dic As Object, Arr, vArr As Range, I As Long, Mcty As Long, Cty As Long, Bp As String
Set Dic = CreateObject("Scripting.Dictionary")
With Sheet1
      Arr = .Range("A3", .Range("D65536").End(3)).Value
      Set vArr = .Range("I9", .[I1000].End(3))
End With
With Sheet2
Cty = Application.Match(.ComboBox1.Value, vArr, 0)
Mcty = Sheet1.Range("H" & 8 + Cty)
Bp = .ComboBox2.Value
    For I = 1 To UBound(Arr)
        If Arr(I, 1) = Mcty Then
            If Arr(I, 3) = Bp Then
                If Not Dic.exists(Arr(I, 4)) Then Dic.Add Arr(I, 4), ""
            End If
        End If
    Next I
      .CB.List = Dic.keys
End With
End Sub

Các bạn cho mình hỏi về các dòng lệnh trên :
Mcty = Sheet1.Range("H" & 8 + Cty)

ở trên có tác dụng gì ? đoạn Mcty = Sheet1.Range("H") thì mình biết nhưng & 8 + Cty mình ko hiểu (nếu mã cty thay bằng chữ (string) thì nó báo lổi bằng số thì ok)
bạn có thể giải thích giúp mình không ?

Cảm ơn nhiều
 

Bài viết mới nhất

Back
Top Bottom