Nhập bản ghi có chọn lọc (Microsoft Excel)
Ole đã gặp sự cố khi nhập thông tin vào sổ làm việc Excel. Có vẻ như các tệp anh ta cần nhập thường có hàng nghìn hàng nghìn bản ghi trong đó. Tuy nhiên, Ole không cần hầu hết các hàng đầu vào và thường loại bỏ chúng khi các bản ghi được nhập vào Excel. Ole đang tìm cách loại bỏ các bản ghi không mong muốn trong quá trình nhập để anh ấy có ít việc phải làm hơn khi dữ liệu nằm trong sổ làm việc của mình.
Có một số cách khác nhau để tiếp cận giải pháp cho vấn đề này. Một giải pháp là sử dụng Access làm bước nhập đầu tiên của bạn. Access sẽ dễ dàng xử lý hàng nghìn bản ghi bạn muốn nhập — ngay cả khi có nhiều bản ghi hơn những gì bạn có thể nhập vào Excel. Bạn có thể nhập tệp vào Access, lọc ra các bản ghi không mong muốn, sau đó xuất bảng kết quả dưới dạng sổ làm việc Excel.
Tuy nhiên, giải pháp tốt nhất có thể là bỏ qua hoàn toàn các bộ lọc nhập của Excel. Bạn có thể dễ dàng viết một quy trình nhập trong VBA và cho phép nó xử lý tệp nhập. Ví dụ: hãy xem xét macro sau:
Sub Import() Dim sFile As String Dim sUnwanted As String Dim sDelim As String Dim iRow As Integer Dim iCol As Integer Dim bBadRecord As Boolean Dim iTemp As Integer sFile = "d:\data.txt" sUnwanted = "bad text" sDelim = "," Open sFile For Input As #1 iRow = 1 While Not EOF(1) 'Scan file line by line iCol = 1 Line Input #1, sBuffer ' Check to see if should ignore record bBadRecord = Instr(sBuffer, sUnwanted) If Not bBadRecord Then iTemp = Instr(sBuffer, sDelim) While iTemp > 0 With Application.Cells(iRow, iCol) .NumberFormat = "@" 'Text formatting .Value = Left(sBuffer, iTemp-1) End With iCol = iCol + 1 sBuffer = Mid(sBuffer, iTemp+1, Len(sBuffer)) iTemp = Instr(sBuffer, sDelim) Wend If Len(sBuffer) > 0 Then With Application.Cells(iRow, iCol) .NumberFormat = "@" 'Text formatting .Value = sBuffer End With End If iRow = iRow + 1 End If Wend Close #1 End Sub
Macro này mở một tệp dữ liệu và đọc từng bản ghi trong tệp. Nó kiểm tra bản ghi để đảm bảo rằng nó được phép nhập, sau đó kéo bản ghi ra, dựa trên dấu phân cách và nhồi thông tin vào trang tính hiện tại. Bạn có thể thay đổi tên của tệp dữ liệu (biến sFile), văn bản cho biết bản ghi không hợp lệ (biến sUnwallow) và dấu phân tách (biến sDelim).
Ví dụ, giả sử rằng bạn có một tệp dữ liệu tên là Customer.txt. Tệp này chứa tất cả hồ sơ khách hàng của bạn, nhưng bạn không muốn nhập hồ sơ cho khách hàng có địa chỉ bên trong Hoa Kỳ. Hơn nữa, các bản ghi trong tệp dữ liệu sử dụng một ký tự tab giữa mỗi trường. Trong trường hợp này, bạn chỉ cần thực hiện các thay đổi sau đối với các biến ở đầu macro:
sFile = "d:\Customers.txt" sUnwanted = "United States" sDelim = Chr(9)
Khi bạn chạy macro, trang tính hiện tại chỉ chứa dữ liệu mong muốn.
_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 (2239) áp dụng cho Microsoft Excel 97, 2000, 2002 và 2003. Bạn có thể tìm thấy phiên bản của mẹo này cho giao diện ribbon của Excel (Excel 2007 trở lên) tại đây: