RaoVat24h
Excel Office

CÁCH LẤY DỮ LIỆU KHÔNG TRÙNG TỪ NHIỀU SHEET VÀO 1 SHEET

Advertisement
Giả sử bạn có dữ liệu của nhiều chi nhánh. Trong đó mỗi Sheet là một chi nhánh và có thể có dữ liệu trùng nhau trong các Sheet. Vậy làm thế nào để có thể tự động lấy các dữ liệu không trùng từ các chi nhánh vào 1 Sheet tổng hợp duy nhất? Hãy cùng tìm hiểu cách làm trong bài viết này nhé.

CÁCH LẤY DỮ LIỆU KHÔNG TRÙNG TỪ NHIỀU SHEET VÀO 1 SHEET

Trong yêu cầu này, chúng ta có thể dễ thấy 2 nội dung chính cần thực hiện:
  • Nội dung 1: Gộp dữ liệu từ nhiều Sheets vào 1 Sheet
  • Nội dung 2: Phân biệt các dữ liệu trùng lặp trong kết quả và xóa bỏ các dữ liệu trùng

GỘP DỮ LIỆU TỪ NHIỀU SHEETS VÀO 1 SHEET

Nội dung này các bạn có thể tham khảo tại bài viết:
Khi tổng hợp dữ liệu, bạn có nhu cầu tổng hợp nhiều sheets Excel vào 1 sheet duy nhất để làm báo cáo. Việc mở từng sheet ra copy dữ liệu sẽ rất tốn công sức và thời gian. Đây là 1 bài toán lý tưởng cho VBA hay Macro trong Excel có thể giúp bạn hoàn thành 1 cách dễ dàng.
Giả sử chúng ta có 3 sheets với cấu trúc giống nhau và chỉ khác nhau về dữ liệu như sau:

Các bước để tổng hợp Sheet1, Sheet2, Sheet3 vào Sheet “Tong Hop” như sau:
Bước 1: Mở file Tong hop.xlsm
Bước 2: Bấm tổ hợp phím ALT + F11 để mở trình soạn thảo VBA
cach-mo-trinh-soan-thao-vba
Bước 3: Mở Project Explorer: Bấm vào View > Project Explorer
Mở Project Explorer
Bước 4: Trong cửa sổ Project Explorer, tạo 1 Module mới
Bước 5: Copy code sau vào trong module mới vừa tạo ra:
[sociallocker id=2748]
Sub MergeSheets()
Dim x As Integer
Dim ws As Worksheet
On Error GoTo ErrHandler
Application.ScreenUpdating = False
x = 1
For Each ws In ThisWorkbook.Sheets
If ws.Name <> “Tong Hop” Then
If x = 1 Then
ws.UsedRange.Copy Sheets(“Tong Hop”).Range(“A1”)
Else
lr = Sheets(“Tong Hop”).UsedRange.Rows.Count
ws.UsedRange.Offset(1).Copy Sheets(“Tong Hop”).Range(“A” & lr + 1)
End If
x = x + 1
End If
Next ws
ErrHandler:
Debug.Print Err.Description
End Sub
view rawMergeSheets.bas hosted with ❤ by GitHub
[/sociallocker]
Bước 6: Bấm phím F5 và chiêm ngưỡng kết quả.
Đến đây bạn đã có thể bắt đầu tìm hiểu những điều thú vị của VBA được rồi. 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 …

TỰ ĐỘNG LỌC BỎ DỮ LIỆU TRÙNG LẶP

Trong trường hợp dữ liệu ở các Sheet có sự trùng lặp, và tại Sheet tổng hợp kết quả chúng ta muốn kết quả thu được chỉ gồm các nội dung không trùng lặp, cách làm như sau:
  • Bước 1: Record macro cho thao tác Remove Duplicate
Đoạn code thu được là:
ActiveSheet.Range(“A1:C50”).RemoveDuplicates Columns:=Array(1, 2, 3), Header:=xlYes
  • Bước 2: Sửa lại đoạn code thu được:
Thay ActiveSheet bằng tên Sheet: Tong hop
Thay dòng 50 bằng giá trị dòng cuối có dữ liệu
Kết quả là:
Sheets(“Tong hop”).Range(“A1:C” & lr).RemoveDuplicates Columns:=Array(1, 2, 3), Header:=xlYes
Chú ý: Vùng dữ liệu gồm 3 cột là A, B, C nên Array sẽ là 1, 2, 3. Nếu vùng lọc trùng có nhiều cột hơn thì Array sẽ thay đổi tương ứng.
  • Bước 3: Sử dụng code lọc dữ liệu trùng trong đoạn code gộp dữ liệu
Sub GopSheet_XoaTrung()
Dim x As Integer
Dim lr as long
Dim ws As Worksheet
On Error GoTo ErrHandler
Application.ScreenUpdating = False
‘Gộp sheet
x = 1
For Each ws In ThisWorkbook.Sheets
If ws.Name <> “Tong Hop” Then
If x = 1 Then
ws.UsedRange.Copy Sheets(“Tong Hop”).Range(“A1”)
Else
lr = Sheets(“Tong Hop”).UsedRange.Rows.Count
ws.UsedRange.Offset(1).Copy Sheets(“Tong Hop”).Range(“A” & lr + 1)
End If
x = x + 1
End If
Next ws
‘Xóa trùng
lr = Sheets(“Tong Hop”).UsedRange.Rows.Count
Sheets(“Tong hop”).Range(“A1:C” & lr).RemoveDuplicates Columns:=Array(1, 2, 3), Header:=xlYes
ErrHandler:
Debug.Print Err.Description
End Sub
Để copy đoạn code trên, bạn bấm vào mục View raw ở góc phải bên dưới cửa sổ Code.
Như vậy chỉ cần kết hợp với 1 thao tác nhỏ là xóa bỏ dữ liệu trùng bằng Record Macro, bạn đã có thể làm được nhiều việc hơn trong cùng 1 câu lệnh VBA rồi.

?

Rate this post

DienDan.Edu.Vn

DienDan.Edu.Vn Cám ơn bạn đã quan tâm và rất vui vì bài viết đã đem lại thông tin hữu ích cho bạn.
DienDan.Edu.Vn! là một website với tiêu chí chia sẻ thông tin,... Bạn có thể nhận xét, bổ sung hay yêu cầu hướng dẫn liên quan đến bài viết. Vậy nên đề nghị các bạn cũng không quảng cáo trong comment này ngoại trừ trong chính phần tên của bạn.
Cám ơn.

Đăng bình luận

(+84) (901) 369.468