Jak wyeksportować wybrane kolumny do pliku csv


24

Chcę wyeksportować określoną liczbę kolumn z programu Excel do pliku .csv. Mam około 10 kolumn jak lname, fname, phone, address, emaili tak dalej. Co należy zrobić, aby wyeksportować tylko niektóre kolumny jak lname, emaili tak dalej?

Odpowiedzi:


23

Po prostu wykonaj w prosty sposób:

  1. Zastosuj konkatenację dla 10 kolumn

    =CONCATENATE(A1,",",B1,",",C1,",",D1,",",E1,",",F1,",",G1,",",H1,",",I1,",",J1)
    
  2. Przeciągnij w dół koniec ostatniego wiersza

  3. Skopiuj kolumnę wyników
  4. Wklej to do notatnika
  5. Zapisz go jako .csvformat pliku

CONCATENATE działało dla mnie naprawdę świetnie. Dziękuję Ci bardzo.
Nedim Šabić

3
Proste ... chyba że w którejkolwiek z twoich kolumn można znaleźć podwójny cytat ...
biskupa

Czy nie musisz oddzielać konkatenowanych elementów średnikiem? = CONCATENATE (A1; ","; B1; ","; C1; ","; D1; ","; E1; ","; F1; ","; G1; ","; H1; "," ; I1; ","; J1)
mabho

9

Wybierz pierwszą kolumnę, którą chcesz. Następnie, przytrzymując <Ctrl>, wybierz pozostałe kolumny, które chcesz. Skopiuj swój wybór i wklej go do nowego skoroszytu. Zapisz nowy skoroszyt jako plik .csv.

Jeśli zamierzasz to robić często, zapisz makro swoich kroków. Oto makro zarejestrowane z mojego testu. W moim przykładzie kolumna A to Nazwa, a kolumna E to E-mail. Zmodyfikowałem również makro, aby nazwa pliku SaveAs zawierała bieżącą datę.


Chciałem wyświetlić przykładowe makro, ale z jakiegokolwiek powodu superużytkownik popełnił błąd po kliknięciu przycisku Zapisz zmiany. Spróbuję ponownie później.


4

Oto rozwiązanie o niskiej technologii:

  1. Zapisz kopię całego arkusza jako .csv.
  2. Pozostając w programie Excel, usuń niepotrzebne kolumny.
  3. Zapisać.

3

Napisałem do tego własne rozwiązanie VBA jako dodatek; jest dostępny tutaj na GitHub.

Przykładowy widok (kliknij obraz, aby uzyskać większą wersję):

Zrzut ekranu formularza narzędzia

Kroki użytkowania to:

  • Zainstaluj dodatek
  • Załaduj formularz ( Ctrl+ Shift+ Cjest obecnie przypisany do wyświetlenia formularza)
  • Podświetl zakres, który chcesz wyeksportować
  • Wybierz folder eksportu
  • Wprowadź żądaną nazwę pliku, format liczb i separator
  • Wybierz, czy chcesz dołączyć, czy nadpisać
  • Kliknij „Eksportuj”

Formularz jest niemodalny, więc można pozostawić go otwartego podczas wybierania różnych zakresów lub nawigowania między arkuszami lub skoroszytu do skoroszytu. Należy zauważyć, że „at symbol” ( @) służy jako reprezentacja formatu liczbowego „General” programu Excel dla operacji wyjściowych takich jak ten.

Zawartość C:\test.csvpowyższego przykładu:

13,14,15
14,15,16
15,16,17

2
Sub ExportSelectionAsCSV()
    ' MS Excel 2007
    ' Visual Basic for Applications
    '
    ' Copies the selected rows & columns
    ' to a new Excel Workbook. Saves the new 
    ' Workbook as Comma Separated Value (text) file.
    '
    ' The active workbook (the 'invoking' workbook - the 
    ' one that is active when this subroutine is called) 
    ' is unaffected.
    '
    ' Before returning from the subroutine, the invoking workbook
    ' is "set back to" (restored as) the active workbook.
    '
    ' Note: target filename is hard coded (code is simpler that way)

    ' Suspends screen updating (until ready to return)
    ' Warning: ScreenUpdating MUST be re-enabled before
    ' returning from this subroutine.
    '
    ' Note: Step through this subroutine line-by-line to prove
    ' to yourself that it is performing as promised.
    ' (Please step through the code at least once - use F8)
    Application.ScreenUpdating = False

    ' Gets the name of *this (the invoking) workbook
    ' so *this workbook can again be set active
    ' at the end of this subroutine.
    Dim CurrentFileName As String
    CurrentFileName = ActiveWorkbook.Name
    Debug.Print "Active File: " + CurrentFileName

    ' Copies the selected cells (to the clipboard).
    ' Precondition: Cells must be selected before 
    ' calling this subroutine.
    Selection.Copy

    ' Instantiates a (new) object instance of type Excel workbook.
    ' Side-effect: The new workbook instance is now
    ' the 'active' workbook. 
    Workbooks.Add Template:="Workbook"

    ' Selects the first cell of the 
    ' first worksheet of the new workbook.
    Range("A1").Select

    ' Pastes the clipboard contents to the new worksheet
    ' (of the new workbook)
    ActiveSheet.Paste

    ' Writes the new (active) Excel workbook to file.
    ' The format is Comma Separated Value
    ActiveWorkbook.SaveAs Filename:= _
    "C:\temp\data.csv" _
    , FileFormat:=xlCSV, _
    CreateBackup:=False

    ' Gets the filename of the new (active) workbook
    ' so the name can be logged.
    Dim NewFileName As String
    NewFileName = ActiveWorkbook.Name
    Debug.Print "Active File: " + NewFileName

    ' Closes the new CSV file
    Application.DisplayAlerts = False
    ActiveWorkbook.Close
    Application.DisplayAlerts = True

    ' Clears the clipboard contents.
    Application.CutCopyMode = False

    ' Restores the invoking workbook as the active
    ' Excel workbook. 
    Workbooks(CurrentFileName).Activate
    Range("A1").Select

    ' Re-Enables Excel screen display.
    Application.ScreenUpdating = True
End Sub


1

Jeśli otworzysz plik w edytorze Rona, możesz ukryć niepotrzebne kolumny, a następnie wyeksportować wynikowy „widok” jako plik programu Excel lub w dowolnym innym formacie. Jeszcze lepiej, możesz zapisać widok do wykorzystania w przyszłości. Bardzo szybko, bardzo łatwo.


1

Jeszcze inne rozwiązanie:

  1. Wybierz komórki, które chcesz wyeksportować
  2. Owiń tabelę wokół komórek (np. Naciśnij klawisze Control + T w systemie Windows)
  3. Uruchom makro ExportTable

Zapisuje tabelę na aktywnym arkuszu jako nowy plik CSV (otwierając nowy skoroszyt i zapisując stamtąd, używając nazwy tabeli jako nazwy pliku).

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.