Я хочу экспортировать определенное количество столбцов из Excel в файл .csv. У меня есть около 10 столбцов, таких как lname
, fname
, phone
, address
, email
и так далее. Что я должен сделать, чтобы экспортировать только определенные столбцы, такие как lname
, email
и т.д.?
8 ответов
Просто сделайте простым способом:-
Применить конкатенацию для 10 столбцов
=CONCATENATE(A1,",",B1,",",C1,",",D1,",",E1,",",F1,",",G1,",",H1,",",I1,",",J1)
Перетащите вниз конец списка вашего последнего ряда
- Скопируйте столбец результата
- Вставьте его в блокнот
- Сохраните его в формате
.csv
Выберите первый столбец, который вы хотите. Затем, удерживая нажатой <Ctrl>
, выберите нужные столбцы. Скопируйте ваш выбор и вставьте его в новую рабочую книгу. Сохраните новую книгу в виде файла .csv.
Если вы собираетесь делать это часто, запишите макрос ваших шагов. Вот макрос, записанный из моего теста. В моем примере столбец A - это имя, а столбец E - это электронная почта. Я также изменил макрос, чтобы имя файла SaveAs включало текущую дату.
Я собирался показать пример макроса, но по какой-то причине ошибки суперпользователя выходили, когда я нажимал «Сохранить изменения». Я попробую еще раз позже.
Вот низкотехнологичное решение:
- Сохраните копию всего листа в формате .csv.
- Оставаясь открытым в Excel, удалите ненужные столбцы.
- Сохранить.
Я написал свое собственное решение VBA для этого в качестве надстройки; это доступно здесь на GitHub.
Пример просмотра (щелкните изображение для увеличения):
Шаги для использования:
- Установите надстройку
- Загрузить форму (Ctrl+Shift+C в настоящее время назначен, чтобы показать форму)
- Выделите диапазон, который вы хотите экспортировать
- Выберите папку экспорта
- Введите желаемое имя файла, числовой формат и разделитель
- Выберите, добавлять ли или перезаписать
- Нажмите «Экспорт»
Форма является немодальной, поэтому вы можете оставить ее открытой, пока вы выбираете разные диапазоны или перемещаетесь от листа к листу или от книги к книге. Отметим, что символ "at" (@
) служит представлением числового формата "General" в Excel для таких операций вывода, как эта.
Содержимое C:\test.csv
из приведенного выше примера:
13,14,15
14,15,16
15,16,17
Еще одно решение:
- Выберите ячейки, которые вы хотите экспортировать
- Оберните таблицу вокруг ячеек (например, нажмите Control+T в Windows)
- Запустите макрос ExportTable
Сохраняет таблицу на активном листе как новый CSV (открывая новую книгу и сохраняя ее, используя имя таблицы в качестве имени файла).
Если вы откроете файл в редакторе Рона, вы сможете скрыть ненужные столбцы, а затем экспортировать полученное «представление» в файл Excel или любой другой формат. А еще лучше вы можете сохранить вид для дальнейшего использования. Очень быстро, очень легко.
Вы можете легко сделать это с помощью скрипта PowerShell. Вы можете использовать функцию Get-ExcelData в этом фрагменте PowerShell и передать результаты через Select-Object и, наконец, в Export-Csv.
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