Excel - Εξαγωγή δεδομένων από συγκεκριμένες στήλες

Θέμα

Έχω μερικές στήλες δεδομένων που μοιάζουν κάπως έτσι:

 δεδομένα1 ... data2 ... data3 val ......... val ........ val val ......... val ........ val val ......... val ........ val val ......... val ........ val 

(τα δεδομένα1-3 είναι μόνο τα ονόματα των δεδομένων στις στήλες)

Θέλω να μετατρέψω αυτό το ίδιο ή λίγο περισσότερο αυτόματα σε ένα αρχείο .csv τροποποιημένο σε αυτές τις γραμμές:

 (δεδομένα3) (δεδομένα1) (δεδομένα2) val ........- val ....... val val ........- val ....... val val .. ......- val ....... val val ........- val ....... val 

Οι κεφαλίδες στηλών τοποθετούνται μέσα () επειδή δεν υποτίθεται ότι εμφανίζονται στο αρχείο .csv. Η σειρά των δεδομένων1-3 είναι τυχαία στο παράδειγμά μου, πρέπει να μπορώ να χρησιμοποιήσω μια διαφορετική σειρά. Ξέρω πώς να διαμορφώσετε τα κελιά για να αλλάξετε τις τιμές σε αρνητικά.

Θα περίμενα ότι θα ήταν κάτι σαν φόρτωση δεδομένων από μια στήλη με όνομα σε ένα αρχείο. τα κελιά στην τελευταία στήλη θα φαίνονται σαν '= [path / sourcefile.xls] columnname! column-values: "data2"'. Αυτό θα μπορούσε να είναι μακριά και δεν είναι ακόμη δυνατό στο Excel, και αν δεν είναι αυτό θα ήθελα να ξέρω.

Επίσης το αρχείο προέλευσης θα περιέχει στήλες που δεν πρόκειται να χρησιμοποιηθούν στο αρχείο csv. Επομένως, η διαδικασία πρέπει να προσδιορίσει τις καθορισμένες στήλες σε ένα συγκεκριμένο αρχείο, να τις αντιγράψει και να τις αναδιατάξει και στη συνέχεια να τις επικολλήσει στο αρχείο .csv.

Οποιεσδήποτε ιδέες για το πώς να το κάνετε αυτό;

Λύση

Ο παρακάτω κώδικας προϋποθέτει

  • 1. Τα δεδομένα βρίσκονται σε φύλλο που ονομάζεται Φύλλο1
  • 2. Μπορεί να δημιουργηθεί ένα προσωρινό όνομα φύλλου myTempSheet
  • 3. Το όνομα αρχείου CSV που θα αποθηκευτεί στο tempCSV.csv
  • 4. Δεν απαιτείται κενή στήλη

Χρησιμοποιώ

Αφού επικολλήσετε τον κώδικα, εκτελέστε τη μακροεντολή. Θα σας ρωτήσει πώς θέλετε να εμφανίζεται η στήλη στο CSV. Έτσι, αν η πρώτη στήλη που θέλετε είναι D, η σωστή απάντηση είναι 4. Αφού τελειώσετε με την ενημέρωση για τον τρόπο εμφάνισης των στηλών, απλά πατήστε ok χωρίς καμία τιμή.

Κώδικας:

 Sub createFile () Dim numOfCol ως ακέραιο Dim colNum ως ακέραιος Dim myTempSheet ως συμβολοσειρά Dim dataSheet ως συμβολοσειρά Dim colValue ως παραλλαγή Dim ColIndex () ως ακέραιο Dim cvsName ως συμβολοσειρά ThisWorkbook.Save myTempSheet = "myTempSeet" dataSheet = "Sheet1" cvsName = " tempCSV "Φύλλα (dataSheet) .Επιλέξτε numOfCol = Κύτταρα (1, Columns.Count) .End (xlToLeft) .Κολέγιο ReDim ColIndex (numOfCol) Για colNum = 1 Στο numOfCol colValue = InputBox (" Τι στήλη πρέπει να είναι στη θέση "& colNum & "στο αρχείο CVS", "Col Position") Εάν colValue = "" Έπειτα Έξοδος για Else ColIndex (colNum) = EndColValue Εάν Επόμενο Σφάλμα Συνεχίζεται Επόμενα Φύλλα (myTempSheet) .Ανεγκαταστήστε Σφάλμα GoTo 0 Sheets.Add ActiveSheet. Όνομα = myTempSheet Για το colNum = 1 Στο numOfCol Αν ColIndex (colNum)> 0 Στη συνέχεια τα φύλλα (dataSheet) .Επιλέξτε Columns (ColIndex (colNum)) Επιλέξτε Selection.Copy Sheets (myTempSheet) .Επιλέξτε Columns (colNum) .Select ActiveSheet.PasteSpecial xlValue Else Έξοδος για End Εάν τα επόμενα φύλλα (myTempSheet) .Επιλέξτε numOfCol = Κύτταρα (1, Columns.Count) .End (xlToLe (1, colNum) "" ("& Cells (1, colNum) &") "End If Next Επεξεργασία ActiveWorkbook.SaveAs _ Όνομα αρχείου: = cvsName & ".csv", _FileFormat: = xlCSV, _ CreateBackup: = True End Sub 

Σημείωση

Χάρη στην rizvisa1 για αυτή την άκρη στο φόρουμ.

Προηγούμενο Άρθρο Επόμενο Άρθρο

Οι Καλύτερες Συμβουλές