[Hỏi] Code filter theo điều kiện của các checkbox

Liên hệ QC

onlylove0610

Thành viên chính thức
Tham gia
5/4/13
Bài viết
67
Được thích
6
Chào các anh các chị.
Em muốn làm một số việc để thay thế việc lọc mất nhiều thao tác quá nhưng không biết làm. Em có ghi trong file đính kèm.
Rất mong các anh chị giúp đỡ
 

File đính kèm

  • Test.xlsm
    50.8 KB · Đọc: 20
Chào các anh các chị.
Em muốn làm một số việc để thay thế việc lọc mất nhiều thao tác quá nhưng không biết làm. Em có ghi trong file đính kèm.
Rất mong các anh chị giúp đỡ
Bạn thử nhập gì đó vào dòng 2 có tô màu ấy, rồi thử ENTER coi nó ra cái gì
 

File đính kèm

  • Test(1).xlsm
    21 KB · Đọc: 29
Upvote 0
Chào các anh các chị.
Em muốn làm một số việc để thay thế việc lọc mất nhiều thao tác quá nhưng không biết làm. Em có ghi trong file đính kèm.
Rất mong các anh chị giúp đỡ
mình làm mẫu cho bạn thôi nha xem code tuỳ biến theo yêu cầu của mình
PHP:
Private Sub CheckBox1_Click()
 If CheckBox1 = True Then
        Range("$A$8:$A$1000").AutoFilter 1, "<>"
    Else
        Range("$A$8:$A$1000").AutoFilter
    End If
End Sub
 
Upvote 0
Cám ơn anh quanghai1969, anh kieu manh. Với cách anh kieu manh đưa ra ít thao tác hơn anh quanghai. Các anh có thể giúp em thêm nữa được không ạ. Với cách làm của anh em chỉ có thể lọc được 1 tùy chọn
Như anh kieu manh giải giúp em. Em tạo 4 check box và thay đổi Range("$A$7:$A$1000").AutoFilter 1, "HX1" thì chỉ được mỗi check box anh tạo là được. Em mới tập tọe mong anh đừng giận.Các cột lọc với ý định: Lọc 1, 2 hoặc tất cả. Gồm 4 cột A,B, C, D
 

File đính kèm

  • Test.xlsm
    50.8 KB · Đọc: 8
Upvote 0
Em đã thay đổi toàn bộ checkBox1 thành 2,3,4.. và đã lọc được tuy nhiên chỉ được 1 giá trị. Nhưng em muốn nhiều giá trị hơn thì làm các nào. Ví dụ tích vào HX1, HX2 nó vẫn hiện lên cả 2.Tương tự nhu vậy cột A,B liên kết với nhau. Cột C em cần lọc giá trị tổng, tổng CT và tất cả. Mong các anh giúp đ
PHP:
Private Sub CheckBox1_Click()
 If CheckBox1 = True Then
        Range("$A$8:$A$1000").AutoFilter 1, "<>"
    Else
        Range("$A$8:$A$1000").AutoFilter
    End If
End Sub
 
Upvote 0
Em đã thay đổi toàn bộ checkBox1 thành 2,3,4.. và đã lọc được tuy nhiên chỉ được 1 giá trị. Nhưng em muốn nhiều giá trị hơn thì làm các nào. Ví dụ tích vào HX1, HX2 nó vẫn hiện lên cả 2.Tương tự nhu vậy cột A,B liên kết với nhau. Cột C em cần lọc giá trị tổng, tổng CT và tất cả. Mong các anh giúp đ
PHP:
Private Sub CheckBox1_Click()
 If CheckBox1 = True Then
        Range("$A$8:$A$1000").AutoFilter 1, "<>"
    Else
        Range("$A$8:$A$1000").AutoFilter
    End If
End Sub

Làm mẫu cho bạn xem rồi từ từ nghiên cứu. Code thì được hết nhưng nhìn cái file mẫu với dữ liệu mẫu có sẵn chẳng muốn code cho đầy đủ. Mình giúp tới đây thôi. Bạn tự xử tiếp nhá
 

File đính kèm

  • Checkbox.xlsm
    27.1 KB · Đọc: 51
Upvote 0
[FONT=&quot]Em xin chân thành cảm ơnmọi người. Đây là những kiến thức rất hay, hiệu quả chobản thân cũng như công việc củaem. Tuy nhiên em cũng chưa hiểu rõ, không biết cách thức hoạt động của code này như thế nào (chưa học đến đây).Anh có thể diễn dải những code được không. Em sẽ tiếp tục tìm hiểu để biết cách làm những cột tương tự, những bài tập như thế. 1 lần nữa em xin chân thành cảm ơn[/FONT]
 
Upvote 0
[FONT=&amp]Em xin chân thành cảm ơnmọi người. Đây là những kiến thức rất hay, hiệu quả chobản thân cũng như công việc củaem. Tuy nhiên em cũng chưa hiểu rõ, không biết cách thức hoạt động của code này như thế nào (chưa học đến đây).Anh có thể diễn dải những code được không. Em sẽ tiếp tục tìm hiểu để biết cách làm những cột tương tự, những bài tập như thế. 1 lần nữa em xin chân thành cảm ơn[/FONT]
Mặc dù chỉ vài dòng code ngắn nhưng diễn giải ra thì cả 1 đống lu xu bu. Nên thôi ngán lắm hỏng chơi giải thích đâu.
 
Upvote 0
[FONT=&amp]Em xin chân thành cảm ơnmọi người. Đây là những kiến thức rất hay, hiệu quả chobản thân cũng như công việc củaem. Tuy nhiên em cũng chưa hiểu rõ, không biết cách thức hoạt động của code này như thế nào (chưa học đến đây).Anh có thể diễn dải những code được không. Em sẽ tiếp tục tìm hiểu để biết cách làm những cột tương tự, những bài tập như thế. 1 lần nữa em xin chân thành cảm ơn[/FONT]

4 checkbox trên bảng tính được gán cho Sub ConditionMaker. Gán bằng cách click phải chuột vào từng checkbox, chọn Asign Macro, chỉ vào ConditionMakerOK
(may mắn bạn đã dùng CheckBox Forms Control nên mới Asign Macro được)
Bây giờ, mỗi khi bạn chọn bất cứ checkbox nào thì đồng nghĩa sẽ gọi Sub ConditionMaker
Sub này làm nhiệm vụ thiết lập vùng điều kiện cho Advanced Filter tại cột XFA (bạn dịch chuyển đến cột này, bấm Checkbox sẽ thấy) và đồng thời Sub ConditionMaker cũng gọi luôn Sub Loc bên dưới
(Sub Loc chỉ làm công việc Advanced Filter với vùng điều kiện đã thiết lập trước đó)
------------------------------
Chú Hải cho bài này cũng hơi bị... hay hen!
Ẹc... Ẹc...
 
Upvote 0
Cho em mạn phép hỏi ngu 1 câu: Giờ tiếp tục chuyển qua cột B em thêm thông số gì. Với conditionMaker chẳng thấy dòng cột gì nên em không biết thay đổi ở đâu
 
Upvote 0
PHP:
Option Explicit
Sub ConditionMaker()Dim i&, n&, Dk(1 To 5, 1 To 3)For i = 1 To 4   With ActiveSheet.CheckBoxes("Chk" & i)      If .Value = 1 Then         n = n + 1         Dk(1, 2) = 1         Dk(1 + n, 2) = .Caption      End If   End WithNext[XEZ1].Resize(UBound(Dk), 2) = DkLocEnd Sub
Với dòng khai báo biến là như nào ạ: Dim i&, n&, Dk(1 To 5, 1 To 3)
("Chk" nghĩa là gì.
If .Value = 1 Then
n = n + 1
Dk(1, 2) = 1
Dk(1 + n, 2) = .Caption
Trên đây là những chỗ em không hiểu mong các thầy chỉ bảo. Em đang vọc theo cuốn sách của thầy Phan Tự Hướng.Nên vẫn còn gà mong các anh thông cảm
 
Upvote 0
PHP:
Option Explicit
Sub ConditionMaker()Dim i&, n&, Dk(1 To 5, 1 To 3)For i = 1 To 4   With ActiveSheet.CheckBoxes("Chk" & i)      If .Value = 1 Then         n = n + 1         Dk(1, 2) = 1         Dk(1 + n, 2) = .Caption      End If   End WithNext[XEZ1].Resize(UBound(Dk), 2) = DkLocEnd Sub
Với dòng khai báo biến là như nào ạ: Dim i&, n&, Dk(1 To 5, 1 To 3)
("Chk" nghĩa là gì.
If .Value = 1 Then
n = n + 1
Dk(1, 2) = 1
Dk(1 + n, 2) = .Caption
Trên đây là những chỗ em không hiểu mong các thầy chỉ bảo. Em đang vọc theo cuốn sách của thầy Phan Tự Hướng.Nên vẫn còn gà mong các anh thông cảm
bài 10 giải thích rõ ràng rồi còn gì .dáng đọc đi nha
 
Upvote 0
Với dòng khai báo biến là như nào ạ: Dim i&, n&, Dk(1 To 5, 1 To 3)
("Chk" nghĩa là gì.
If .Value = 1 Then
n = n + 1
Dk(1, 2) = 1
Dk(1 + n, 2) = .Caption
Trên đây là những chỗ em không hiểu mong các thầy chỉ bảo. Em đang vọc theo cuốn sách của thầy Phan Tự Hướng.Nên vẫn còn gà mong các anh thông cảm
Mình đã nói rồi, chỉ vài dòng code thôi nhưng nếu giải thích thì cả 1 đống lu xu bu mà không tin. Từng dòng thì ý nghĩa cũng đơn giản, nhưng thuật toán thì chẳng ai giống ai hết

Dim i& tương đương với Dim i As Long
Dim Dk(1 To 5, 1 To 3) có nghĩa là mảng Dk có 5 dòng 3 cột
Còn tại sao cần có 1 cột cho mảng DK mà mình tạo tới 3 cột thì... hỏng nói đâu.
"Chk" là 1 chuỗi mà người dùng đã tạo ra trước đó
Khi mở 1 cặp lệnh With.... End With thì những câu lệnh ở giữa có liên quan phải có dấu chấm
Caption là text mà ta gán cho checkbox được nhìn thấy ở trên sheet

Đại khái là thế. Chịu khó cày ngày đêm khoảng 3 tháng thì sẽ viết code được giống như mình. Nếu muốn cao siêu hơn thì chắc cần nhiều thời gian hơn.
 
Upvote 0
Mình 1 tuần có khoảng 2 đến 4 tiếng cho học VBA chắc cả năm quá. Chưa kể không có chỗ học nên đang tự học sách. Đây toàn là những kiến thức mới. Cần phải tu luyện nhiều hơn. Bác quanghai có thể chia sẻ cách học của bác trên mạng thế nào là tốt được không
 
Upvote 0
Em đang tìm hiểu nhưng không tìm ra cách nào để liên kết sang lọc thêm ở cột B. Em chưa biết gì về thuật toán nên không biết thay đổi thông số gì để thay đổi lọc thêm các cột khác nữa. Các anh có thể chỉ giúp em thay đổi những gì để thêm cột ví dụ cột B, D (không liền nhau) được không ạ.
 
Upvote 0
Web KT

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

Back
Top Bottom