CSV 파일 (Microsoft Excel)의 빈 열에 대한 일관되지 않은 출력
Mark는 Excel로 CSV 파일을 만들 때 이상한 점을 발견했습니다. 파일이 출력 데이터의 각 행을 끝내는 방식이 항상 일치하지는 않습니다. 70 개 필드 (열)의 데이터가 포함 된 CSV 파일을 만든 다음 텍스트 편집기에서 CSV 파일을 보면 모든 레코드에 캐리지 리턴이 포함되어 있지만 다른 위치에 있음을 알았습니다. 일부 레코드에는 빈 필드를 나타내는 쉼표 문자열이 있으며 ‘오른쪽’위치에서 종료됩니다. 나머지는 마지막으로 채워진 열 바로 뒤에 끝납니다. 일부는 쉼표가 몇 개 있지만 모든 빈 필드에 충분하지 않습니다. Mark는 이런 일이 발생하는 이유와 일관된 수의 출력 필드를 포함하도록 CSV 파일을 얻는 방법을 궁금해했습니다.
비교적 쉬운 방법 중 하나는 CSV로 저장하기 전에 데이터에 완전히 채워진 “더미”필드를 포함하는 것입니다. 예를 들어 테이블에 70 개의 열이있는 경우 A71 셀에 마침표를 입력합니다. 표에있는 행 수만큼이 셀의 내용을 아래쪽으로 복사합니다. 그런 다음 워크 시트를 CSV로 내보낼 때 Excel은 더미 필드를 포함하지만 더 중요한 것은 각 레코드의 마지막 필드 앞에 적절한 수의 필드 구분 기호 (쉼표)를 포함합니다.
더미 필드를 원하지 않는 경우 다음을 시도 할 수 있습니다.
-
헤더 행에서 셀 중 하나를 선택하십시오.
-
Shift + Ctrl + 8을 누릅니다. 전체 데이터 테이블이 선택됩니다.
-
Ctrl + H를 눌러 찾기 및 바꾸기 대화 상자의 바꾸기 탭을 표시합니다. (그림 1 참조)
-
찾을 내용 상자가 완전히 비어 있는지 확인하십시오.
-
바꿀 내용 상자에 단일 공백을 입력합니다.
-
모두 바꾸기를 클릭합니다. Excel에서 얼마나 많은 교체가 수행되었는지 알려줍니다.
이 단계는 모든 빈 셀을 단일 공백이 포함 된 셀로 바꿉니다. 그런 다음 CSV로 내보내기를 수행하면 각 행에 대해 적절한 수의 필드가 내보내집니다.
마지막으로, 정기적으로 큰 테이블을 CSV 형식으로 내보내는 경우 파일 생성을 수행하는 매크로를 생성 할 수 있습니다. 다음은 사용할 수있는 매크로 유형의 한 예일뿐입니다.
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
매크로는 새로운 통합 문서를 만든 다음 원래 워크 시트의 정보를 통합 문서의 첫 번째 워크 시트 A 열에 “컴파일”합니다. 원본의 모든 단일 필드에 대한 구분 기호가 포함될이 데이터는 CSV 파일로 저장됩니다. 마지막으로 임시 통합 문서가 삭제됩니다.
CSV의 경로와 파일 이름은 코드 (sFileName 변수)에 하드 코딩되어 있지만 원하는 경우 코드에서 파일 이름을 요청하도록 수정할 수 있습니다.
_ExcelTips_는 비용 효율적인 Microsoft Excel 교육을위한 소스입니다.
이 팁 (3068)은 Microsoft Excel 97, 2000, 2002 및 2003에 적용됩니다.