Cả nhà cho em hỏi làm cách nào để trích xuất dữ liệu mà không phải mỗi lần đều thông qua Advanced Filter hoặc có cách nào dùng VBA để dữ liệu hiện ra dựa trên lựa chọn của mình? Ví dụ em đang có giá trị thị trường bây giờ em muốn lọc dựa trên giá trị thị trường theo các options: nhỏ hơn 100 triệu, lớn hơn 100 triệu và vân vân thì mỗi lần chọn option em phải làm sao để excel hiện ra dữ liệu dựa trên option em chọn?
. . . . . . làm cách nào để trích xuất dữ liệu mà không phải mỗi lần đều thông qua Advanced Filter hoặc có cách nào dùng VBA để dữ liệu hiện ra dựa trên lựa chọn của mình? Ví dụ em đang có giá trị thị trường bây giờ em muốn lọc dựa trên giá trị thị trường theo các options: nhỏ hơn 100 triệu, lớn hơn 100 triệu và vân vân thì mỗi lần chọn option em phải làm sao để excel hiện ra dữ liệu dựa trên option em chọn?
Nên thông qua AdvancedFilter (& bạn như đã làm 'nhão' thì phải)
Bước kế tiếp là mở bộ thu macro lên & ghi lại tất tần tật các hành động của bạn là OK thôi;
Chú ý các phạm vi lựa chọn nên đưa vô hộp Validation & ngay ô bên trên nó là tiêu đề của sự lựa chọn
[Nếu cân trau chuốt đứa con tinh thần của mình thì gởi lên diễn đàn, sẽ có người hỗ trợ để nó diêm dúa thêm hơn.]
Nên thông qua AdvancedFilter (& bạn như đã làm 'nhão' thì phải)
Bước kế tiếp là mở bộ thu macro lên & ghi lại tất tần tật các hành động của bạn là OK thôi;
Chú ý các phạm vi lựa chọn nên đưa vô hộp Validation & ngay ô bên trên nó là tiêu đề của sự lựa chọn
[Nếu cân trau chuốt đứa con tinh thần của mình thì gởi lên diễn đàn, sẽ có người hỗ trợ để nó diêm dúa thêm hơn.]
làm sao để mình sử dụng code VBA vậy? bạn chỉ cho mình với. Mình có sử dụng advanced filter rồi nhưng mỗi lần lại phải thao tác mà không biết có cách tự động hóa luôn trong sheet excel này không?
Bạn làm theo cách này nhé:
Ô A3 gồm các giá trị cận dưới: 0,100,1000,3000 (Validation) mang ý nghĩa ">="
Ô B3 gồm các giá trị cận trên: 100,1000,3000,10000000 (Validation) mang ý nghĩa "<="
Khi click chọn 2 ô này thì sẽ có 2 hướng xảy ra:
1- Nếu B3<A3: sẽ xuất hiện thông báo yêu cầu chọn lại
2- Nếu B3>=A3:
- Unhide các dòng
- Xét từng dòng cột D, nếu KHÔNG thỏa điều kiện (>=A3 và <=B3) thì hide toàn bộ dòng
Cách dùng:
Chuột phải vào tên sheet, ViewCode, dán code này vào:
PHP:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lr&, rng As Range, cell As Range
If Intersect(Target, Range("A3:B3")) Is Nothing Then Exit Sub
If Range("B3") < Range("A3") Then
MsgBox "Vui long chon lai!"
Exit Sub
End If
Range("D8:D10000").EntireRow.Hidden = False
lr = Cells(Rows.Count, "D").End(xlUp).Row
Set rng = Range("D8:D" & lr)
For Each cell In rng
If cell.Value < Range("A3").Value Or cell.Value > Range("B3").Value Then cell.EntireRow.Hidden = True
Next
End Sub
Bạn làm theo cách này nhé:
Ô A3 gồm các giá trị cận dưới: 0,100,1000,3000 (Validation) mang ý nghĩa ">="
Ô B3 gồm các giá trị cận trên: 100,1000,3000,10000000 (Validation) mang ý nghĩa "<="
Khi click chọn 2 ô này thì sẽ có 2 hướng xảy ra:
1- Nếu B3<A3: sẽ xuất hiện thông báo yêu cầu chọn lại
2- Nếu B3>=A3:
- Unhide các dòng
- Xét từng dòng cột D, nếu KHÔNG thỏa điều kiện (>=A3 và <=B3) thì hide toàn bộ dòng
Cách dùng:
Chuột phải vào tên sheet, ViewCode, dán code này vào:
PHP:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lr&, rng As Range, cell As Range
If Intersect(Target, Range("A3:B3")) Is Nothing Then Exit Sub
If Range("B3") < Range("A3") Then
MsgBox "Vui long chon lai!"
Exit Sub
End If
Range("D8:D10000").EntireRow.Hidden = False
lr = Cells(Rows.Count, "D").End(xlUp).Row
Set rng = Range("D8:D" & lr)
For Each cell In rng
If cell.Value < Range("A3").Value Or cell.Value > Range("B3").Value Then cell.EntireRow.Hidden = True
Next
End Sub
Bạn cho mình hỏi là ở cái sheet 1 highlight A3 và B3, mình có chọn thử >= 1000 và <3000 nhưng sheet lại không filter? hay mình phải làm thêm 1 thao tác nữa? do mình tưởng code này sẽ trả về giá trị khi mình chọn A3 và B3. Mình có phải click VBA Run mỗi lần chọn A3 và B3 không?
Bài đã được tự động gộp:
mình chọn >=1000 và <= 3000 nhưng giá trị trả về không chính xác. Bạn cho mình hỏi là mình phải sửa ở đâu? hay mình phải làm thao tác nào khác không? Mình cảm ơn nhiều
Bạn làm theo cách này nhé:
Ô A3 gồm các giá trị cận dưới: 0,100,1000,3000 (Validation) mang ý nghĩa ">="
Ô B3 gồm các giá trị cận trên: 100,1000,3000,10000000 (Validation) mang ý nghĩa "<="
Khi click chọn 2 ô này thì sẽ có 2 hướng xảy ra:
1- Nếu B3<A3: sẽ xuất hiện thông báo yêu cầu chọn lại
2- Nếu B3>=A3:
- Unhide các dòng
- Xét từng dòng cột D, nếu KHÔNG thỏa điều kiện (>=A3 và <=B3) thì hide toàn bộ dòng
Cách dùng:
Chuột phải vào tên sheet, ViewCode, dán code này vào:
PHP:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lr&, rng As Range, cell As Range
If Intersect(Target, Range("A3:B3")) Is Nothing Then Exit Sub
If Range("B3") < Range("A3") Then
MsgBox "Vui long chon lai!"
Exit Sub
End If
Range("D8:D10000").EntireRow.Hidden = False
lr = Cells(Rows.Count, "D").End(xlUp).Row
Set rng = Range("D8:D" & lr)
For Each cell In rng
If cell.Value < Range("A3").Value Or cell.Value > Range("B3").Value Then cell.EntireRow.Hidden = True
Next
End Sub