Nhập tệp dữ liệu khổng lồ (Microsoft Excel)
Excel có giới hạn về số hàng bạn có thể có trong một trang tính — tối đa 65.535. Tuy nhiên, rất có thể có một tệp dữ liệu thô có nhiều hơn số hàng này. Nếu bạn cần nhập tệp đó vào Excel, thì việc làm như vậy gần như không thể thực hiện được nếu không nâng cấp lên Excel 2007 hoặc phiên bản mới hơn. (Các phiên bản sau đó đã phá vỡ giới hạn 65.535 hàng.) Tuy nhiên, có một số điều bạn có thể làm.
Một khả năng là tạo bản sao của tệp văn bản thô (tệp bạn muốn nhập) và sau đó cắt giảm kích thước của từng tệp. Ví dụ: nếu bạn có tổng cộng 110.000 hàng cần nhập vào Excel và bạn đang hoạt động dưới giới hạn 65.535 hàng, bạn có thể tạo hai bản sao của tệp văn bản thô. Xóa nửa sau của tệp văn bản đầu tiên và nửa đầu của tệp thứ hai. Do đó, bạn có thể nhập tệp đầu tiên (bây giờ là 55.000 hàng) vào một trang tính và tệp thứ hai (cũng là 55.000 hàng)
vào thứ hai.
Nếu bạn không muốn chia nhỏ các tệp đầu vào của mình, bạn có thể cân nhắc nhập tệp vào Access. Không giống như Excel, Access hầu như không có giới hạn về số hàng bạn có thể nhập. Sau đó, bạn có thể làm việc với tệp trong Access hoặc xuất các phần của tệp để sử dụng trong Excel.
Cuối cùng, bạn có thể sử dụng macro để nhập các bản ghi trong tệp nguồn lớn. Có nhiều cách bạn có thể làm điều này, nhưng ý tưởng cơ bản đằng sau bất kỳ cách tiếp cận nào là tìm nạp từng hàng từ tệp nguồn và đặt nó vào một hàng mới của trang tính. Macro phải theo dõi số hàng được đặt và chuyển sang trang tính mới, nếu cần.
Public Sub LoadFile() Dim strLine As String Dim I As Long Dim J As Long Dim iLen As Integer Dim iSh As Integer Dim lL As Long Dim sDelim As String Dim MaxSize As Long sDelim = Chr(9) MaxSize = 65000 I = 0 Open "C:\MyDir\MyFile.txt" For Input As #5 Do While Not EOF(5) iSh = (I / MaxSize) + 1 lL = I Mod MaxSize Line Input #5, strLine If Right(strLine, 1) <> sDelim Then strLine = Trim(strLine) & sDelim End If J = 0 Do While Len(strLine) > 1 iLen = InStr(strLine, sDelim) Worksheets("Sheet" & iSh).Offset(lL, J).Value = _ Trim(Left(strLine, iLen - 1)) strLine = Trim(Right(strLine, Len(strLine) - iLen)) J = J + 1 Loop I = I + 1 Loop Close #5 End Sub
Macro giả định rằng bạn đã có đủ trang tính trong sổ làm việc của mình để chứa dữ liệu và chúng được đánh số Sheet1, Sheet2, Sheet3, v.v. Hai biến bạn sẽ muốn kiểm tra trong chương trình là cài đặt của sDelim và MaxSize. Đầu tiên chỉ định ký tự nào được sử dụng làm dấu phân cách trường trong thông tin đang được đọc. Thứ hai chỉ định số hàng tối đa bạn muốn trên mỗi trang tính. (Không đặt MaxSize lớn hơn bất kỳ phiên bản Excel nào của bạn cho phép.)
Cuối cùng, lưu ý rằng macro mở tệp văn bản MyFile.txt. Bạn sẽ muốn thay đổi câu lệnh Mở này để nó mở tệp nguồn thực mà bạn muốn nhập.
_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 (2533) áp dụng cho Microsoft Excel 97, 2000, 2002 và 2003.