Cách Sắp Xếp Dữ Liệu Trong Excel Bằng Vba

Sắp xếp là một việc thường xuyên được thực hiện khi thao tác với dữ liệu trong VBA. Lợi ích của việc sắp xếp giúp cho chúng ta quản lý dữ liệu tốt hơn, dễ dàng tra cứu, kiểm tra hơn. Trong bài học này chúng ta cùng tìm hiểu một số cách sử dụng lệnh Sort trong VBA:

Ví dụ 1: Sắp xếp không bao gồm tiêu đề

Cho bảng dữ liệu sau, hãy sắp xếp thứ tự nội dung trong bảng theo dữ liệu ở cột D

View the code on Gist.

Trong câu lệnh này, bảng tính giới hạn từ ô A2 tới dòng cuối của cột G (toàn bộ bảng tính từ cột A tới G, từ dòng 2 tới dòng cuối có chứa dữ liệu).

Nội dung sắp xếp là nội dung tại cột D, tính từ ô D2

Thứ tự sắp xếp là thứ tự tăng dần (nếu sắp xếp giảm dần thì dùng xlDescending thay cho xlAscending)

Thứ tự sắp xếp có thể biểu diễn dưới dạng số:

xlAscending là số 1

xlDescending là số 2

Ví dụ 2: Sắp xếp có bao gồm tiêu đề

Câu lệnh sắp xếp với dữ liệu trên có bao gồm tiêu đề như sau:

View the code on Gist.

Những nội dung cần chú ý:

Vùng bắt đầu của bảng dữ liệu: Bao gồm cả dòng tiêu đề (trong ví dụ này bắt đầu từ dòng thứ 1)

Header = xlYes để thể hiện vùng dữ liệu này có tiêu đề, Header = xlNo để thể hiện không có tiêu đề. Tuy nhiên nếu vùng dữ liệu được chọn không có chứa tiêu đề thì không cần xét tiêu chí này (như ví dụ 1)

Dữ liệu sắp xếp ở cột D vẫn bắt đầu từ ô D1 hoặc D2 đều được

Ví dụ 3: Sắp xếp thứ tự trong tất cả các sheet

Nếu yêu cầu sắp xếp là bắt buộc và áp dụng trên tất cả các sheet thì chúng ta có thể áp dụng nội dung này để có thể sắp xếp dữ liệu một cách nhanh chóng chỉ với 1 câu lệnh:

View the code on Gist.

Diễn giải cách thực hiện:

Sử dụng vòng lặp để chạy qua các đối tượng là WorkSheet nằm trong Workbook đang làm việc

Tại mỗi Sheet đi qua thực hiện lệnh lọc dữ liệu với vùng dữ liệu được xác định: cột A đến cột G, từ dòng 2 tới dòng cuối có chứa dữ liệu, sắp xếp tại cột D từ ô D2, sắp xếp theo thứ tự tăng dần (1 = xlAscending)

Như vậy chúng ta đã có thể nắm được cách thức thực hiện lệnh sắp xếp trong VBA rồi phải không nào. Câu lệnh sắp xếp khá đơn giản và đem lại hiệu quả cao, giúp chúng ta có thể quản lý dữ liệu tốt hơn trong khi làm việc trên Excel.

Tải về file mẫu tại địa chỉ: http://bit.ly/2B8IP5K

Với sứ mệnh: ” Mang cơ hội phát triển kỹ năng, phát triển nghề nghiệp tới hàng triệu người “, đội ngũ phát triển đã và đang làm việc với những học viện, trung tâm đào tạo, các chuyên gia đầu ngành để nghiên cứu và xây dựng lên các chương trình đào tạo từ cơ bản đến chuyên sâu xung quanh các lĩnh vực: Tin học văn phòng, Phân tích dữ liệu, Thiết kế, Công nghệ thông tin, Kinh doanh, Marketing, Quản lý dự án…

Gitiho tự hào khi được đồng hành cùng:

50+ khách hàng doanh nghiệp lớn trong nhiều lĩnh vực như: Vietinbank, Vietcombank, BIDV, VP Bank, TH True Milk, VNPT, FPT Software, Samsung SDIV, Ajinomoto Việt Nam, Messer,…

Hướng Dẫn Cách Sắp Xếp Dữ Liệu Trong Excel Bằng Vba

Sắp xếp là một việc thường xuyên được thực hiện khi thao tác với dữ liệu trong VBA. Lợi ích của việc sắp xếp giúp cho chúng ta quản lý dữ liệu tốt hơn, dễ dàng tra cứu, kiểm tra hơn. Trong bài học này chúng ta cùng tìm hiểu một số cách sử dụng lệnh Sort trong VBA:

Ví dụ 1: Sắp xếp không bao gồm tiêu đề

Cho bảng dữ liệu sau, hãy sắp xếp thứ tự nội dung trong bảng theo dữ liệu ở cột D

Câu lệnh sắp xếp như sau:

View the code on Gist.

Trong câu lệnh này, bảng tính giới hạn từ ô A2 tới dòng cuối của cột G (toàn bộ bảng tính từ cột A tới G, từ dòng 2 tới dòng cuối có chứa dữ liệu).

Nội dung sắp xếp là nội dung tại cột D, tính từ ô D2

Thứ tự sắp xếp là thứ tự tăng dần (nếu sắp xếp giảm dần thì dùng xlDescending thay cho xlAscending)

Thứ tự sắp xếp có thể biểu diễn dưới dạng số:

xlAscending là số 1

xlDescending là số 2

Ví dụ 2: Sắp xếp có bao gồm tiêu đề

Câu lệnh sắp xếp với dữ liệu trên có bao gồm tiêu đề như sau:

View the code on Gist.

Những nội dung cần chú ý:

Vùng bắt đầu của bảng dữ liệu: Bao gồm cả dòng tiêu đề (trong ví dụ này bắt đầu từ dòng thứ 1)

Header = xlYes để thể hiện vùng dữ liệu này có tiêu đề, Header = xlNo để thể hiện không có tiêu đề. Tuy nhiên nếu vùng dữ liệu được chọn không có chứa tiêu đề thì không cần xét tiêu chí này (như ví dụ 1)

Dữ liệu sắp xếp ở cột D vẫn bắt đầu từ ô D1 hoặc D2 đều được

Ví dụ 3: Sắp xếp thứ tự trong tất cả các sheet

Nếu yêu cầu sắp xếp là bắt buộc và áp dụng trên tất cả các sheet thì chúng ta có thể áp dụng nội dung này để có thể sắp xếp dữ liệu một cách nhanh chóng chỉ với 1 câu lệnh:

View the code on Gist.

Diễn giải cách thực hiện:

Sử dụng vòng lặp để chạy qua các đối tượng là WorkSheet nằm trong Workbook đang làm việc

Tại mỗi Sheet đi qua thực hiện lệnh lọc dữ liệu với vùng dữ liệu được xác định: cột A đến cột G, từ dòng 2 tới dòng cuối có chứa dữ liệu, sắp xếp tại cột D từ ô D2, sắp xếp theo thứ tự tăng dần (1 = xlAscending)

Như vậy chúng ta đã có thể nắm được cách thức thực hiện lệnh sắp xếp trong VBA rồi phải không nào. Câu lệnh sắp xếp khá đơn giản và đem lại hiệu quả cao, giúp chúng ta có thể quản lý dữ liệu tốt hơn trong khi làm việc trên Excel.

Tải về file mẫu tại địa chỉ: http://bit.ly/2B8IP5K

Hướng Dẫn Cách Lọc Dữ Liệu Vào Báo Cáo Chi Tiết Trong Excel Bằng Vba

Trong công việc, bạn có từng gặp phải những câu hỏi này không:

Lập báo cáo chi tiết như thế nào?

Làm thế nào để lấy dữ liệu từ một bảng theo những yêu cầu nhất định?

Cách trích xuất dữ liệu theo điều kiện để đưa sang 1 bảng khác?

Bài viết sau đây sẽ 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 cách làm mới rất hay khi sử dụng VBA vào việc lọc dữ liệu vào Báo cáo chi tiết.

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

Thao tác 1: Chọn chức năng Data / Filter cho bảng dữ liệu

Thao tác 2: Lọc cột Nhà cung cấp theo tên Nhà cung cấp ở ô I4

Thao tác 3: Lọc ngày ở cột Ngày theo thông tin ngày ở ô I2 và I3

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

Bước 2: Đọc nội dung macro

Mở cửa sổ VBA, chúng ta xem nội dung Macro vừa ghi được

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

Nội dung này là : Chọn vùng ô từ A2 đến F2, mở chức năng Auto filter

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

Nội dung này là: Lọc dữ liệu ở cột thứ 1 (cột Ngày), điều kiện lọc là Lớn hơn hoặc bằng ngày 01/10/2023, và nhỏ hơn hoặc bằng 31/10/2023

Đừng bỏ lỡ: lớp học Excel kế toán với các chuyên gia

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

Chúng ta chú ý vào các vùng điều kiện (Criteria1, Criteria2) ở trong 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

Vì giá trị ngày tháng trong Excel về bản chất là dạng số nên có thể chuyển đổi về dạng CLng(…)

* Tinh gọn và hoàn thiện Code VBA

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

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

Bước 4: Copy dữ liệu và paste sang bảng chi tiết và hoàn thiện 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 dán vào Bảng chi tiết để lấy kết quả.

Code cho bước này như sau: (Các bạn có thể record macro cho thao tác này rồi chọn lọc code)

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

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

Paste dữ liệu: Dán vào Bảng chi 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ẽ bỏ lệnh Copy và Filter đi bằng 2 dòng lệnh:

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

Range(“A2:F2”).AutoFilter ‘Hủy bỏ chế độ Filter. Lặp lại thao tác này để hủy bỏ chế độ filter khi không dùng đến nữa (trả về trạng thái ban đầu khi chưa dùng Filter)

Bước 5: Kiểm tra code bằng phím F8

Sau khi hoàn thành xong code trong VBA, chúng ta bấm nút F8 để kiểm tra xem code đó hoạt động ra sao

Nếu code hoạt động đúng thì sẽ ra kết quả như sau:

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

Trong cửa sổ VBA làm việc với Sheet1, chọn sự kiện Change (thay đổi nội dung). Khi chúng ta thay đổi nội dung trong sheet này thì sẽ có điều gì xảy ra.

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

Thao tác như sau:

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

Khi thay đổi dữ liệu ở vùng I2:I4 thì chúng ta muốn cập nhật nội dung của báo cáo chi tiết. Do đó chúng ta sẽ gọi ra Macro vừa hoàn thành ở phần trên.

* Bổ sung:

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

Đặt dòng Code xóa dữ liệu lên đầu Macro:

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

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

Cách Record macro và tinh gọn code từ thao tác Record

Cách đọc hiểu code trong VBA

Cách gán Macro vào sự kiện xảy ra trong Sheet (ví dụ với sự kiện thay đổi một số nội dung trong sheet)

Trình tự logic của câu lệnh trong VBA

Trong công việc chúng ta sẽ gặp phải những việc này rất nhiều, được ứng dụng nhiều trong thực tế.

Bài viết này sẽ tạo tiền đề cho các bạn làm quen với VBA, cách học VBA dễ dàng và làm quen dần với kỹ thuật VBA giúp tự động hóa khi sử dụng Excel.

Cảm ơn các bạn đã theo dõi.

Tải về tài liệu kèm theo bài học

Hướng Dẫn Cách Sắp Xếp Thứ Tự Dữ Liệu Tự Động Trong Excel Bằng Vba

Ở bài học trước, chúng ta đã tìm hiểu về việc sử dụng chức năng Sort để sắp xếp thứ tự dữ liệu trong Excel.

Xem lại bài học tại: Sắp xếp dữ liệu theo nhiều điều kiện trong Excel

Trong bài này, hocexcel.online sẽ giúp các bạn ứng dụng tính năng này vào VBA để giúp chúng ta có thể tự động sắp xếp lại dữ liệu mỗi khi nhập thêm dữ liệu mới vào bảng. Chúng ta tìm hiểu bài học này thông qua bài tập ví dụ sau:

Cho bảng dữ liệu sau:

Xóa nội dung của dữ liệu đã nhập ở I2:M2 (làm mới dữ liệu)

Sắp xếp tự động các nội dung trong bảng dữ liệu

Bước 1: Record Macro thao tác lọc dữ liệu

Tại tab Developer, chọn chức năng Record Macro

Chúng ta có thể nhập dữ liệu bất kỳ ở vùng này

Ví dụ như sau:

Căn cứ theo yêu cầu của đề bài, chúng ta có thể xác định được trình tự lưu dữ liệu bao gồm:

Đưa dữ liệu từ vùng nhập mới vào Bảng dữ liệu

Xóa dữ liệu ở vùng nhập mới

Sắp xếp dữ liệu trong Bảng dữ liệu

Chúng ta mở cửa sổ VBA và tạo Sub Lưu dữ liệu như sau:

Code Lưu dữ liệu vào Bảng:

Tìm dòng cuối trong bảng (các bạn có thể tìm hiểu thêm kiến thức về VBA trong khóa học VBA101 của thầy Thanh)

Dim DongCuoi As Long DongCuoi = Sheet1.Cells(Rows.Count, 1).End(xlUp).Row + 1

Lưu dữ liệu vào dòng cuối

Sheet1.Range(“A” & DongCuoi & “:” & “F” & DongCuoi).Value = Sheet1.Range(“I2:N2”).Value

Code xóa dữ liệu ở vùng nhập mới (lưu ý là ô M2 có chứa công thức = Đơn giá * Số lượng, vì vậy chúng ta không cần xóa công thức này)

Sheet1.Range(“I2:M2”).ClearContents

Code sắp xếp dữ liệu: chúng ta gọi Macro sắp xếp đã thu được ở trên

Call Macro3

* Kết quả dòng lệnh như sau:

Sau khi đã gán macro vào nút mũi tên, chúng ta thực hiện việc lưu dữ liệu. Và đây là kết quả của chúng ta:

Các bạn có thể thấy là dòng này sau khi thêm đã được tự động sắp xếp theo thứ tự vào trong bảng, chứ không phải xuất hiện ở cuối bảng như thông thường.

Như vậy là chúng ta đã hoàn thành được yêu cầu của đề bài rồi. Nội dung này được ứng dụng rất nhiều trong việc quản lý dữ liệu, nhất là những dữ liệu lớn, cần sắp xếp theo nhiều điều kiện: thời gian, phân nhóm …

VBA giúp ích rất nhiều trong công việc: giúp bạn tăng tốc trong quá trình xử lý trên Excel, giúp lập các báo cáo tự động, điều khiển các chương trình khác như Word, Power Point, Outlook … giúp biến file Excel của bạn trở thành 1 phần mềm chuyên nghiệp …

Cách Lọc Phân Loại Dữ Liệu, Xóa Dữ Liệu Trùng Lặp Trong Excel

Lọc phân loại dữ liệu hoặc xóa bỏ những dữ liệu trùng lặp trong Excel là một trong những kỹ năng cơ bản và quan trọng nhất đối với một người hay phải làm việc với các bảng biểu… Bạn đang băn khoăn cách phân loại hoặc xóa những dữ liệu có đặc điểm giống nhau hoặc trùng lặp? Ok, mình sẽ giúp bạn giải quyết nó trong bài viết này!

2 vấn đề đặt ra:

Chúng ta sẽ giải quyết từng vấn đề một.

1. Cách xóa dữ liệu trùng lặp trong Excel

+ Bước 1: Chọn vùng dữ liệu muốn lọc và tìm kiếm dữ liệu bị trùng

Hướng dẫn cách lọc xóa dữ liệu trùng lặp trong Excel.

Ở cửa sổ mới xuất hiện này. Có các cột lọc để bạn đánh dấu. Đó là các điều kiện để lọc xóa dữ liệu trùng lặp. Excel sẽ chỉ loại bỏ những hàng dữ liệu bị trùng lặp chứa tất cả các cột bị đánh dấu. Ví dụ:

Bạn nhấp vào 1 cột “Họ và tên” như trên hình và ấn OK, thì chỉ cần có dữ liệu trùng nhau trong cột Họ và tên. Tất cả dữ liệu thuộc hàng tương ứng với nó sẽ bị xóa bỏ.

Bạn nhấp vào 2 trường là “Họ và tên” và “Lương tháng” chẳng hạn. Thì chỉ hàng dữ liệu nào đồng thời trùng lặp ở cả 2 trường “Họ và tên” và “Lương tháng” mới bị loại bỏ

Dữ liệu có điều kiện trùng lặp ở trường được đánh dấu tích đã bị xóa khỏi bảng excel.

2. Lọc phân loại dữ liệu có chung đặc điểm trong Excel.

Cách lọc, đánh dấu và phân tách những dữ liệu trùng lặp trong Excel là một kỹ thuật rất hay. Nó giúp cho bạn phân tích một bảng tính có khối lượng dữ liệu khổng lồ. Phân nhóm để thao tác riêng biệt được từng nhóm giữ liệu có trường giống nhau.

Để lọc dữ liệu của bảng, chúng ta dùng lệnh Filter. Các bạn cũng thao tác theo các bước sau:

+ Bước 1: Bôi đen vùng dữ liệu cần lọc

+ Bước 2: trong tab Data, bạn nhấp vào Filter. Khi đó, bảng số liệu sẽ xuất hiện các cột lọc như thế này:

Lọc dữ liệu trong excel bằng Filter

Bạn có thể thấy ở đầu mỗi cột sẽ xuất hiện hộp mũi tên để bạn nhấp vào đó chọn điều kiện lọc. Bây giờ, ví dụ mình muốn tìm ra những người có đánh giá tháng là tốt. Mình sẽ nhấp vào mũi tên ở cột ” đánh giá tháng “. Xuất hiện bảng tùy chọn và mình chọn như dưới hình:

Cách lọc dữ liệu: Bạn chỉ đánh dấu tích vào những ô nào đáp ứng điều kiện lọc. Ở đây mình tích vào 2 ô có chữ ” tốt“. Sau đó nhấp vào OK để áp dụng.

→ Mẹo: Bạn cũng có thể đánh chữ “tốt” vào khung “Search” nếu có nhiều ô quá nhiều trường:

Sau khi nhấp vào OK, ta thu được kết quả như dưới:

Kêt quả ta đã lọc ra tất cả những nhân viên có đánh giá tháng là “Tốt”.

Bây giờ, trong số những nhân viện này, mình lại muốn tìm ra những người có lương từ 8 triệu rưỡi tới dưới 11 triệu. Mình sẽ tiếp tục nhấp vào ô mũi tên lọc ở cột Lương tháng. Rồi làm như hình dưới:

Dữ liệu đã được lọc ra, và đáp ứng yêu cầu của mình như ban đầu: Đánh giá Tốt và lương từ 8500 đến dưới 11000

Bước 3: Copy, tách dữ liệu đã được lọc ra vị trí khác:

– Bây giờ bạn chỉ cần bôi đen phần kết quả được lọc ra, rồi ấn Copy sau đó Paste ra một vị trí khác để thuận tiện theo dõi là được.

Lệnh lọc kết thúc và ta thu được kết quả: Dữ liệu bị lọc đáp ứng yêu cầu đã được lấy ra khỏi bảng cũ.

Kết luận:

Như vậy, qua bài viết này, bạn đã biết cách xóa dữ liệu trùng lặp và lọc dữ liệu trong excel. Giờ đây, bạn có thể tiếp tục làm việc với lệnh Filter và tìm hiểu sâu hơn với các loại lọc dữ liệu có điều kiện khác (màu văn bản, lớn, nhỏ…) rồi đấy!