LỌC DỮ LIỆU BẰNG VBA TRONG EXCEL

Lập report chi tiết như vậy nào?Làm cố gắng nào để mang dữ liệu xuất phát điểm từ một bảng theo những yêu ước nhất định?Cách trích xuất dữ liệu theo điều kiện để đưa qua 1 bảng khác?

Bài viết sau đây để giúp đỡ bạn trả lời những câu hỏi đó. Đồng thời bạn cũng có thể khám phá ra một giải pháp làm mới rất hấp dẫn khi thực hiện VBA vào bài toán lọc tài liệu vào report chi tiết.

Bạn đang xem: Lọc dữ liệu bằng vba trong excel

* chúng ta có yêu ước sau: phụ thuộc bảng dưới đây, hãy mang dữ liệu ở Bảng cụ thể dựa theo điều khiếu nại thay đổi ở các ô từ bỏ I2:I4 (Thời gian cùng nhà cung cấp)

*


Xem nhanh


Bước 1: Ghi macro những thao tác

Tại tab Developer, các bạn chọn nút lệnh Record Macro

*

Thao tác 1: Chọn tác dụng Data / Filter mang lại bảng dữ liệuThao tác 2: lọc cột Nhà cung cấp theo tên công ty cung cấp ở ô I4Thao tác 3: thanh lọc ngày ở cột Ngày theo thông tin ngày ở ô I2 cùng I3

*


Dù đã có phần mềm, nhưng năng lực Excel vẫn cực kỳ quan trọng cùng với kế toán, bạn đã vững vàng Excel chưa? Hãy nhằm tôi góp bạn, đk khoá học Excel:


*


Hướng dẫn học Excel cơ bản

Bước 2: Đọc ngôn từ macro

Mở hành lang cửa số VBA, họ xem câu chữ Macro vừa ghi được

*

Range(“A2:F2”).SelectSelection.AutoFilter

Nội dung này là : lựa chọn vùng ô tự A2 đến F2, mở chức năng tự động hóa filter

ActiveSheet.Range(“$A$2:$F$47″).AutoFilter Field:=2, Criteria1:=”Anh Tu?n”

Nội dung này là: thanh lọc dữ liệu ở cột thứ 2 (cột NCC), điều kiện lọc là “Anh Tuấn” => VBA không hỗ trợ tiếng việt đầy đủ nên gồm dấu ?

Đừng vứt lỡ: lớp học Excel kế toán tài chính với các chuyên gia

Bước 3: Tinh gọn macro để sử dụng

Cần thay đổi điều kiện lọc vào VBA để liên kết tới vùng điều khiếu nại trong Bảng chi tiết => Khi đó thay đổi tài liệu trong Bảng chi tiết thì macro đã tự động lọc theo nội dung đó.

Chúng ta chú ý vào các vùng điều khiếu nại (Criteria1, Criteria2) ở vào câu lệnh trong VBA

* Câu lệnh lọc NCC

ActiveSheet.Range(“$A$2:$F$47″).AutoFilter Field:=2, Criteria1:=”Anh Tu?n”

Thay “Anh Tu?n” bằng ô I4 (dòng 4, cột 9, sheet 1) trong sheet1 như sau:

ActiveSheet.Range(“$A$2:$F$47”).AutoFilter Field:=2, Criteria1:=Sheet1.Cells(4, 9).value

* Câu lệnh lọc Ngày

ActiveSheet.Range(“$A$2:$F$47”).AutoFilter Field:=1, Criteria1:= _“>=” & CLng(Sheet1.Cells(2, 9).value), Operator:=xlAnd, Criteria2:=”

Vì quý giá ngày mon trong Excel về bản chất là dạng số nên bao gồm thể chuyển đổi về dạng CLng(…)

* Tinh gọn và hoàn thành xong Code VBA

Range(“A2:F2”).Select + Selection.AutoFilter = Range(“A2:F2”).AutoFilter

Range(“B2”).Select dòng này rất có thể bỏ đi

Bước 4: Copy dữ liệu và paste quý phái bảng chi tiết và hoàn thành code

Từ bảng dữ liệu đã được lọc, chúng ta copy toàn bộ kết quả đã lọc được rồi ốp lại Bảng đưa ra tiết để mang kết quả.

Code cho đoạn này như sau: (Các chúng ta có thể record macro cho làm việc này rồi tinh lọc code)

Vì bảng đưa ra tiết chỉ cần lấy nội dung Tên hàng, số lượng, đơn giá, thành tiền đề xuất nội dung đang lấy từ cột C cho tới cột F, bắt đầu từ ô C3 tới F47 (cuối bảng). Chỉ copy phần đa giá trị lộ diện sau khi lọc

ActiveSheet.Range(“$C$3:$F$47”).SpecialCells(xlVisible).Copy

Paste dữ liệu: dính vào Bảng bỏ ra tiết, bắt đầu từ ô H6, chỉ dán dữ liệu dạng Value (giá trị)

Range(“H6”).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _:=False, Transpose:=False

Sau khi Paste dữ liệu xong, chúng ta sẽ vứt lệnh Copy với Filter đi bởi 2 dòng lệnh:

Application.CutCopyMode = False ‘Hủy bỏ chế độ Cut Copy trong excel (khi các bạn Cut/Copy thì Excel đã lưu nội dung đó trong bộ nhớ, và tô đường viền nhấp nháy ở nội dung đó. Lúc không dùng đến chúng ta có thể bỏ đi)

Range(“A2:F2”).AutoFilter ‘Hủy vứt chế độ Filter. Lặp lại làm việc này để hủy bỏ chế độ filter lúc không dùng đến nữa (trả về tâm lý ban đầu khi chưa cần sử dụng Filter)

Bước 5: đánh giá code bởi phím F8

Sau khi xong xuôi xong code trong VBA, chúng ta bấm nút F8 để khám nghiệm xem code đó hoạt động ra sao

Nếu code hoạt động đúng thì đã ra công dụng như sau:

*

Bước 6: Gán macro vào sự khiếu nại thay đổi điều kiện ở vùng ô I2:I4

Trong cửa sổ VBA, các bạn double click vào Sheet1

*

Trong cửa sổ VBA làm bài toán với Sheet1, chọn sự kiện Change (thay đổi nội dung). Khi họ thay đổi câu chữ trong sheet này thì đang có điều gì xảy ra.

*

Ở đây bọn họ quan tâm đến việc thay đổi dữ liệu ở ô I2:I4 mới làm ảnh hưởng tới report chi tiết. Do đó họ chỉ xét sự thay đổi ở vùng này.

Xem thêm: Những Câu Hỏi Vui Về Ngày 8/3, Có Đáp Án, Câu Đố Vui Về Ngày 8/3 Hay Nhất Kèm Đáp Án

Thao tác như sau:

*

Dòng lệnh “If Not Application.Intersect(Range(“I2:I4”), Range(Target.Address)) Is Nothing Then” được gọi là: Nếu có sự thay đổi dữ liệu ở vào vùng I2:I4 xẩy ra thì…

Khi thay đổi dữ liệu ở vùng I2:I4 thì bọn họ muốn update nội dung của report chi tiết. Do đó họ sẽ hotline ra Macro vừa trả thành ở phần trên.

* bửa sung:

Do mỗi điều kiện vẫn cho kết quả nhiều / ít khác nhau, do đó để có thể xác định rõ công dụng của Bảng cụ thể chỉ đúng với điều kiện được chọn, bọn họ cần làm sạch vùng Bảng chi tiết trước khi dán tài liệu vào.

Đặt loại Code xóa tài liệu lên đầu Macro:

*

range(“H6:K100”).ClearContents là làm cho sạch tài liệu trong vùng H6:K100 (là vùng kết quả dữ liệu của bảng chi tiết)

Kết luận

Những nội dung học được qua bài bác này là:

Cách Record macro cùng tinh gọn code từ thao tác làm việc RecordCách đọc gọi code vào VBACách gán Macro vào sự kiện xẩy ra trong Sheet (ví dụ với việc kiện thay đổi một số trong những nội dung vào sheet)Trình tự xúc tích và ngắn gọn của câu lệnh vào VBA

Trong công việc bọn họ sẽ gặp gỡ phải những việc này khôn xiết nhiều, được ứng dụng các trong thực tế.

Bài viết này sẽ tạo nên tiền đề cho chúng ta làm quen với VBA, phương pháp học VBA dễ dàng và làm cho quen dần dần với chuyên môn VBA góp tự động hóa khi sử dụng Excel.