Đầu ra không nhất quán cho các cột trống trong tệp CSV (Microsoft Excel)
Mark nhận thấy một điều kỳ lạ khi nói đến việc tạo tệp CSV với Excel: các tệp không phải lúc nào cũng nhất quán về cách chúng kết thúc mỗi hàng trong dữ liệu đầu ra. Khi tạo tệp CSV có lẽ có 70 trường (cột) dữ liệu và sau đó xem tệp CSV trong trình soạn thảo văn bản, ông nhận thấy rằng tất cả các bản ghi đều chứa ký tự xuống dòng, nhưng ở những vị trí khác nhau. Một số bản ghi có một chuỗi dấu phẩy đại diện cho các trường trống, sau đó kết thúc ở đúng vị trí; những người khác kết thúc ngay sau cột được điền cuối cùng; một số có một vài dấu phẩy, nhưng không đủ cho tất cả các trường trống. Mark tự hỏi tại sao điều này xảy ra và làm thế nào anh ta có thể nhận được các tệp CSV chứa một số lượng trường đầu ra nhất quán.
Một cách tương đối dễ dàng để giải quyết vấn đề này là bao gồm trường “giả” được điền đầy đủ vào dữ liệu của bạn, trước khi bạn lưu dưới dạng CSV. Ví dụ: nếu bảng của bạn có 70 cột trong đó, tại ô A71, hãy nhập một dấu chấm. Sao chép nội dung của ô này xuống dưới, cho nhiều hàng như bạn có trong bảng. Sau đó, khi bạn xuất trang tính sang CSV, Excel sẽ bao gồm trường giả, nhưng quan trọng hơn sẽ bao gồm số lượng dấu phân cách trường (dấu phẩy) thích hợp trước trường cuối cùng đó trong mỗi bản ghi.
Nếu bạn không muốn trường giả, bạn có thể thử cái này:
-
Chọn một trong các ô trong hàng tiêu đề của bạn.
-
Nhấn Shift + Ctrl + 8. Toàn bộ bảng dữ liệu được chọn.
-
Nhấn Ctrl + H để hiển thị tab Thay thế của hộp thoại Tìm và Thay thế. (Xem Hình 1.)
-
Đảm bảo rằng hộp Tìm gì hoàn toàn trống.
-
Trong hộp Replace With, hãy nhập một khoảng trắng.
-
Nhấp vào Thay thế Tất cả. Excel sẽ thông báo cho bạn có bao nhiêu thay thế đã được thực hiện.
Các bước này thay thế tất cả các ô trống bằng các ô chứa một khoảng trắng. Sau đó, bạn có thể thực hiện xuất sang CSV và số lượng trường thích hợp sẽ được xuất cho mỗi hàng.
Cuối cùng, nếu bạn thường xuyên xuất các bảng lớn sang định dạng CSV, bạn có thể muốn tạo một macro thực hiện việc tạo tệp cho bạn. Sau đây chỉ là một ví dụ về loại macro bạn có thể sử dụng:
Sub CreateCSV() Dim wkb As Workbook Dim wks As Worksheet Dim wksOri As Worksheet Dim iCols As Integer Dim lRow As Long Dim iCol As Integer Dim lRows As Long Dim sFilename As String Application.ScreenUpdating = False sFilename = "C:\test.csv" Set wksOri = ActiveSheet iCols = wksOri.Cells. _ SpecialCells(xlCellTypeLastCell).Column lRows = wksOri.Cells. _ SpecialCells(xlCellTypeLastCell).Row Set wkb = Workbooks.Add Set wks = wkb.Worksheets(1) For lRow = 1 To lRows For iCol = 1 To iCols With wks.Cells(lRow, 1) If iCol = 1 Then .Value = wksOri.Cells(lRow, iCol).Text Else .Value = .Value & "," & _ wksOri.Cells(lRow, iCol).Text End If End With Next Next Application.DisplayAlerts = False wkb.SaveAs FileName:=sFilename, _ FileFormat:=xlCSV wkb.Close Application.DisplayAlerts = True wksOri.Parent.Activate Application.ScreenUpdating = True MsgBox sFilename & " saved" Set wks = Nothing Set wkb = Nothing Set wksOri = Nothing End Sub
Macro tạo một sổ làm việc hoàn toàn mới và sau đó “biên dịch” vào cột A của trang tính đầu tiên của sổ làm việc thông tin từ trang tính gốc. Dữ liệu này, sẽ chứa dấu phân cách cho mọi trường trong bản gốc, sau đó được lưu dưới dạng tệp CSV. Cuối cùng, sổ làm việc tạm thời bị xóa.
Đường dẫn và tên tệp của CSV được mã hóa cứng thành mã (biến sFileName), mặc dù nó có thể được sửa đổi để mã yêu cầu tên tệp nếu muốn.
ExcelTips là nguồn của bạn để đào tạo Microsoft Excel hiệu quả về chi phí.
Mẹo này (3068) áp dụng cho Microsoft Excel 97, 2000, 2002 và 2003.