Trích xuất dữ liệu dùng VBA? (1 người xem)

  • Thread starter Thread starter ldao21
  • Ngày gửi Ngày gửi
Liên hệ QC

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

Tôi tuân thủ nội quy khi đăng bài

ldao21

Thành viên mới
Tham gia
21/3/23
Bài viết
4
Được thích
0
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?
 
Câu trả lời là: có.
 
. . . . . . 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.]

Chúc bạn thành công!
 
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.]

Chúc bạn thành công!
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?
 

File đính kèm

Company Name Sub IndustryMarket CapNet DebtEnterprise Value
Market CapMarket CapVMMedical Labs&Testing Srv
536.85​
-21.95​
514.92​
>=100<1000
C. NameSub IndustryMarket CapNet DebtEnterprise Value
USDUSDUSD
AHIMedical Information Sys
15.55​
-5.3​
15.36​
GNPRubber/Plastic Products
53.19​
35.7​
95.96​
GTMSMedical Labs&Testing Srv
25​
41.3​
172.27​
BTAgricultural Chemicals
13.67​
-1.76​
12.15​
LocalAgricultural Operations
82.21​
-91.57​
252.8​
VMMedical Labs&Testing Srv
536.85​
-21.95​
514.92​
MetaWater Treatment Systems
1022.15​
-91.22​
844.71​
SterHazardous Waste Disposal
5338.04​
2534.71​
7878.76​
CasellNon-Hazardous Waste Disp
5627.6​
794.45​
6422.26​
BalchemChemicals-Specialty
5659.77​
533.15​
6193.12​
ADAgricultural Operations
57800.15​
12516.6​
70768.06​
NutrAgricultural Chemicals
50748.14​
14919.53​
65728.56​
MaeTransport-Marine
58814.58​
-18095.02​
42130.18​

PHP:
Sub AdvancedFilter()
' AdvancedFilter Macro'
' Keyboard Shortcut: Ctrl+Shift+F'
    
    Range("B17:F40").Select
    Application.CutCopyMode = False
    Range("B17:F40").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
        "A2:B3"), CopyToRange:=Range("H1:L1"), Unique:=False
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
 

File đính kèm

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:

1679363718646.png
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ài đã được tự động gộp:

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
à do lỗi máy bên mình. Mình cảm ơn nhiều các bạn ^^ :)
 
Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom