Je veux exporter un nombre spécifique de colonnes d'Excel dans un fichier .csv. J'ai environ 10 colonnes comme lname
, fname
, phone
, address
, email
et ainsi de suite. Que dois-je faire pour exporter uniquement certaines colonnes telles que lname
, email
, etc.?
Il suffit de faire de manière simple: -
Appliquer la concaténation sur 10 colonnes
=CONCATENATE(A1,",",B1,",",C1,",",D1,",",E1,",",F1,",",G1,",",H1,",",I1,",",J1)
Faites glisser la liste vers la fin de la dernière ligne
.csv
Sélectionnez la première colonne que vous voulez. Ensuite, tout en maintenant <Ctrl>
enfoncé, sélectionnez les colonnes restantes souhaitées. Copiez votre sélection et collez-la dans un nouveau classeur. Enregistrez le nouveau classeur en tant que fichier .csv.
Si vous comptez le faire fréquemment, enregistrez une macro de vos étapes. Voici la macro enregistrée à partir de mon test. Dans mon exemple, la colonne A est Nom et la colonne E est Email. J'ai également modifié la macro pour que le nom de fichier SaveAs inclue la date du jour.
J'allais montrer un exemple de macro, mais pour une raison quelconque, le superutilisateur est erroné lorsque je clique sur Enregistrer les modifications. Je réessaierai plus tard.
Voici une solution low-tech:
J'ai écrit ma propre solution VBA à ceci en tant que complément; il est disponible ici sur GitHub.
Exemple de vue (cliquez sur l'image pour l'agrandir):
Les étapes d'utilisation sont:
Le formulaire est sans modèle, vous pouvez donc le laisser ouvert pendant que vous sélectionnez différentes plages ou que vous naviguez feuille à feuille ou classeur à classeur. À noter, le symbole "at" (@
) sert à représenter le format numérique "Général" d'Excel pour les opérations de sortie telles que celle-ci.
Contenu de C:\test.csv
de l'exemple ci-dessus:
13,14,15
14,15,16
15,16,17
Encore une autre solution:
Enregistre la table sur la feuille active en tant que nouveau fichier CSV (en ouvrant un nouveau classeur et en enregistrant à partir de là, en utilisant le nom de la table comme nom de fichier).
Si vous ouvrez le fichier dans l'éditeur de Ron , vous pouvez masquer les colonnes que vous ne voulez pas, puis exporter la "vue" obtenue sous forme de fichier Excel ou tout autre fichier. autre format. Mieux encore, vous pouvez enregistrer la vue pour une utilisation ultérieure. Très rapide, très facile.
Vous pouvez facilement le faire avec un script PowerShell. Vous pouvez utiliser la fonction Get-ExcelData dans ce extrait de PowerShell et diriger les résultats via Select-Object et enfin à 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