Tìm sự khác biệt giữa các danh sách (Microsoft Excel)
Không có gì lạ khi mọi người giữ thông tin khách hàng trong trang tính Excel. Nếu bạn có một trang tính chứa tên của tất cả các khách hàng của mình và một trang tính khác chứa tên của các khách hàng đang hoạt động của bạn, bạn có thể muốn sử dụng các khả năng của Excel để khám phá xem những khách hàng không hoạt động của mình là ai.
Có một số cách để bạn có thể hoàn thành nhiệm vụ này. Đầu tiên là thông qua việc sử dụng hàm VLOOKUP. Chức năng trang tính này hoạt động tốt, miễn là danh sách khách hàng của bạn được sắp xếp theo thứ tự bảng chữ cái. Một cách để sử dụng hàm là thêm một cột trạng thái vào “tất cả khách hàng”
bảng tính. Trước tiên, hãy đảm bảo rằng bạn chọn khách hàng đang hoạt động của mình và đặt tên cho họ là “Đang hoạt động”. (Cách bạn xác định tên cho một phạm vi ô đã chọn được đề cập trong ExcelTips. khác) Sau đó, trong danh sách đầy đủ các ứng dụng khách, hãy thêm một cột (có tên Trạng thái) vào bên phải dữ liệu hiện có của bạn. Trong các ô của cột Trạng thái, sử dụng công thức sau:
=IF(ISNA(VLOOKUP(A2,Active,1,FALSE)),"Inactive","Active")
Công thức này giả định rằng tên của khách hàng nằm trong cột A của trang tính hiện tại. Kết quả của công thức là “Hoạt động” hoặc “Không hoạt động”, tùy thuộc vào việc có sự trùng khớp giữa tên ở A2 và tên trong danh sách Hoạt động hay không.
Khi cột Trạng thái đã có, bạn có thể sử dụng khả năng Tự động lọc của Excel để lọc danh sách của mình dựa trên cột trạng thái. Sau đó, bạn có thể dễ dàng hiển thị các máy khách không hoạt động, như mong muốn.
Cần lưu ý rằng trong khi ví dụ trên sử dụng hàm trang tính VLOOKUP, bạn có thể dễ dàng soạn các công thức khác sử dụng các hàm như HLOOKUP và MATCH. Việc bạn sử dụng tùy thuộc vào sở thích cá nhân của bạn và cách trình bày dữ liệu của bạn.
Một giải pháp khác là sử dụng macro để so sánh từng tên trong danh sách “tất cả khách hàng” với tên trong danh sách “khách hàng đang hoạt động”. Nếu không tìm thấy kết quả phù hợp nào, thì tên có thể được thêm vào “máy khách không hoạt động”
danh sách. Macro sau thực hiện điều đó:
Sub ListInactive() Dim cell As Range Dim SearchRng As Range Set SearchRng = Worksheets("Sheet2").Range("A:A") Counter = 1 'First row on Sheet3 contains headings For Each cell In Worksheets("Sheet1") .Range("A2:A1000") _ .SpecialCells(xlCellTypeConstants) ID = cell 'Client ID NM = cell.Offset(0, 1) 'Client name MatchRow = 0 On Error Resume Next MatchRow = WorksheetFunction.Match(ID, _ SearchRng, 0) On Error GoTo 0 If MatchRow = 0 Then Counter = Counter + 1 Worksheets("Sheet3").Cells(Counter, 1) = ID Worksheets("Sheet3").Cells(Counter, 2) = NM End If Next cell End Sub
Macro đưa ra một số giả định về dữ liệu đang được kiểm tra.
Đầu tiên, nó giả định rằng trang tính “tất cả khách hàng” là trang tính đầu tiên và trang tính “khách hàng đang hoạt động” là trang tính thứ hai. Ngoài ra, giả định rằng trang tính thứ ba trống và sẽ chứa danh sách các máy khách không hoạt động. Hơn nữa, giả định là cột A chứa số ID khách hàng duy nhất và cột B chứa tên của khách hàng. Khi macro kết thúc, trang tính thứ ba chứa số máy khách và tên của tất cả các máy khách không hoạt động.
_Lưu ý: _
Nếu bạn muốn biết cách sử dụng các macro được mô tả trên trang này (hoặc trên bất kỳ trang nào khác trên trang ExcelTips), tôi đã chuẩn bị một trang đặc biệt bao gồm thông tin hữu ích.
ExcelTips là nguồn của bạn để đào tạo Microsoft Excel hiệu quả về chi phí.
Mẹo này (2053) áp dụng cho Microsoft Excel 97, 2000, 2002 và 2003.