Uensartet Udgang for Tomme kolonner i en CSV-fil

Mark Warner bemærket en mærkelig ting, når det gælder om at skabe CSV-filer med Excel: filerne er ikke altid i overensstemmelse med, hvordan de ender hver række i uddata. Når han skaber en CSV-fil, der har måske 70 felt (kolonner) af data og derefter ser CSV-filen i en teksteditor, bemærkede han, at optegnelserne alle indeholder linjeskift, men på forskellige steder. Nogle optegnelser har en streng af kommaer repræsenterer tomme felter, så ender i den "rigtige" sted; andre slutter lige efter den sidste befolkede kolonne; nogle har et par kommaer, men ikke nok til alle de tomme felter. Mark undrede det sker, og hvordan han kan få de CSV-filer til at indeholde et sammenhængende antal output felter.

Dette er faktisk et problem, der har været kendt for Microsoft i temmelig lang tid. Microsoft Knowledge Base indeholder en artikel om dette emne allerede i Excel 97:

http://support.microsoft.com/kb/77295

En forholdsvis let måde omkring problemet er at inkludere en fuldt befolket område "dummy" i dine data, før du gemmer som CSV. For eksempel, hvis dit bord har 70 kolonner i det, i celle A71 indtaste en periode. Kopier indholdet af denne celle nedad, for så mange rækker, som du har i tabellen. Når du derefter eksportere regneark til CSV, vil Excel omfatte dummy område, men endnu vigtigere vil omfatte den korrekte antal felt adskillere (komma) før den endelige felt i hver post.

Hvis du ikke ønsker, at dummy felt, kan du prøve dette:

  1. Vælg en af ​​cellerne i din kolonneoverskrift.
  2. Tryk på Skift + Ctrl + 8. Hele datatabel er valgt.
  3. Tryk på Ctrl + H for at få vist fanen Erstat i Søg og Erstat i dialogboksen. (Se figur 1.)

    Uensartet Udgang for Tomme kolonner i en CSV-fil

    Figur 1. Udskift fanen Søg og erstat dialogboksen.

  4. Sørg for, at feltet Søg er helt tom.
  5. I feltet Erstat med indtaste et enkelt mellemrum.
  6. Klik på Erstat alle. Excel bør informere dig, hvor mange udskiftninger blev gjort.

Disse trin erstatter alle de tomme celler med celler, der indeholder et enkelt mellemrum. Du kan så gøre eksport til CSV og korrekt antal felter vil blive eksporteret til hver enkelt række.

Endelig, hvis du rutinemæssigt eksportere store tabeller til CSV-format, kan du ønsker at oprette en makro, der gør skabelsen fil til dig. Det følgende er blot ét eksempel på den type makro, du kan bruge:

Sub CreateCSV ()
Dim WKB Som Workbook
Dim wks As arbejdsark
Dim wksOri som arbejdsark
Dim iCols As Integer
Dim lRow så længe
Dim iCol As Integer
Dim lRows så længe
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 til lRows
For iCol = 1 til iCols
Med wks.Cells (lRow, 1)
Hvis iCol = 1 Så
.Value = WksOri.Cells (lRow, iCol) .Text
Andet
.Value = .Value & "," & _
wksOri.Cells (lRow, iCol) .Text
End hvis
End med
Næste
Næste

Application.DisplayAlerts = False
wkb.SaveAs FileName: = sFileName, _
Filformat: = xlCSV
wkb.Close
Application.DisplayAlerts = True
wksOri.Parent.Activate
Application.ScreenUpdating = True
MsgBox sFileName & "frelst"

Set wks = Nothing
Set WKB = Nothing
Set wksOri = Nothing
End Sub

Makroen skaber en helt ny projektmappe og derefter "samler" ind kolonne A i projektmappen første regneark oplysningerne fra den oprindelige regneark. Disse data, som vil indeholde et skilletegn for hvert enkelt felt i den originale, derefter gemmes som en CSV-fil. Endelig er det temproary projektmappe slettet.

Stien og filnavnet i CSV er hard-kodet i koden (den sFileName variabel), selv om det kunne ændres til at have koden beder om et filnavn, hvis det ønskes.

ExcelTips er din kilde til omkostningseffektiv Microsoft Excel træning. Dette tip (3068) gælder for Microsoft Excel 97, 2000, 2002, og 2003.


© 2019 Zajacperrone.com | Contact us: webmaster# zajacperrone.com