Μεταφορά στήλης σε φύλλα Excel χρησιμοποιώντας VBA

Πίνακας περιεχομένων:

Anonim

Σενάριο

Ας υποθέσουμε ότι έχετε ένα βιβλίο εργασίας excel. Διαθέτει 3 φύλλα. Ένα φύλλο περιέχει 5 στήλες. Κάθε στήλη έχει διαφορετικά δεδομένα πόλης. Κάθε φύλλο περιέχει παρόμοιες 5 στήλες με διαφορετικά δεδομένα των ίδιων πόλεων.

Πρόκληση:

Πρέπει να δημιουργήσουμε ένα αρχείο που περιέχει διαφορετικά φύλλα για κάθε μοναδική στήλη. Κάθε φύλλο πρέπει να περιέχει τα δεδομένα της αντίστοιχης στήλης τους. Στο τέλος, θα έχουμε 5 φύλλα με 3 στήλες το καθένα. Κατά κάποιο τρόπο, μεταφέρει στήλες σε φύλλα.

Λογική:

Αρχικά, πρέπει να δημιουργήσουμε ένα βιβλίο εργασίας που περιέχει διαφορετικά φύλλα για κάθε στήλη. Μπορούμε να το κάνουμε αυτό εξετάζοντας τις επικεφαλίδες του πρώτου φύλλου του αρχικού μας αρχείου.

Στη συνέχεια, πρέπει να περιηγηθούμε σε κάθε φύλλο του αρχικού φύλλου για να αντιγράψουμε κάθε στήλη στα αντίστοιχα φύλλα του νέου βιβλίου εργασίας.

Κώδικας VBA για τη μεταφορά στηλών σε φύλλα.

Ας δούμε τον κώδικα VBA για να μεταφέρουμε πρώτα τα φύλλα. Το εξηγώ παρακάτω.

Sub TransposeColsToSheets () 'varibles Dim wb As Workbook Dim twb As Workbook Dim lstRw As Integer Dim lstCl As Integer Dim cols As Range With Application .DisplayAlerts = False .ScreenUpdating = False End With' δημιουργία νέου αρχείου Set wb = Workbooks.Add 'save το αρχείο. Αντικαταστήστε τη διαδρομή με τον προορισμό σας. wb.SaveAs "C: \ Users \ Manish Singh \ Desktop \ Excel Tip \ result.xlsx" Set twb = ThisWorkbook twb.Sheets (1) .Activate lstCl = Cells (1, Columns.Count). End (xlToLeft) .Column "ταυτοποίηση κεφαλίδων για ονόματα πόλεων Σετ cols = Range (Cells (1, 1), Cells (1, lstCl))" βρόχος για δημιουργία φύλλων Για x = 1 Σε cols.Count wb.Sheets.Add.Name = "page" & x Επόμενος βρόχος για τη μεταφορά στηλών σε φύλλα Για κάθε sh Σε twb. Φύλλα για x = 1 Σε στήλες. Υπολογισμός sh.Activate lstRw = Cells (Rows.Count, 1). End (xlUp). Row Range (Cells (1, x), Κελιά (lstRw, x)). Αντιγράψτε wb. Φύλλα ("σελίδα" & x). Ενεργοποιήστε lstCl = Κελιά (1, Στήλες. Αριθμός). Τέλος (xlToLeft). Στήλη + 1 Εύρος (Κελιά (1, lstCl ), Cells (1, lstCl)). PasteSpecial xlPasteAll Next x Next sh 'αποθήκευση και κλείσιμο του βιβλίου εργασίας αποτελεσμάτων wb.Save wb.Close With Application .DisplayAlerts = True .ScreenUpdating = True End With End Sub 

Μπορείτε να κατεβάσετε το αρχείο για να το χρησιμοποιήσετε αμέσως ή να αντιγράψετε τον κώδικα για να το προσαρμόσετε ανάλογα με τις ανάγκες σας.

Μόλις εκτελέσετε τον κώδικα, θα δημιουργήσει αμέσως ένα αρχείο excel που θα έχει 5 φύλλα, με κάθε φύλλο να περιέχει 3 στήλες από τα δεδομένα της ίδιας πόλης.
Μεταφορά στήλης σε φύλλα

Πώς λειτουργεί;

Στο παραπάνω παράδειγμα κώδικα, υποθέσαμε ότι το αρχείο ξεκινά από το πρώτο κελί κάθε φύλλου και κάθε φύλλο περιέχει τον ίδιο αριθμό στηλών.

Στις πρώτες λίγες γραμμές κώδικα, έχουμε δηλώσει τις μεταβλητές που θα χρειαστούμε στη διαδικασία. Έχουμε αποθηκεύσει τις κεφαλίδες των στηλών σε μια μεταβλητή με όνομα κολεςΈχουμε επίσης δημιουργήσει ένα αρχείο .xlsx, με όνομα αποτέλεσμα.xlsx.

Στη συνέχεια, χρησιμοποιήσαμε έναν βρόχο για να δημιουργήσουμε τον ίδιο αριθμό φύλλων στο result.xlsx όπως στην κεφαλίδα στοκολες

'βρόχος για τη δημιουργία φύλλων Για x = 1 Σε cols.Count wb.Sheets.Add.Name = "page" & x Next 

Στη συνέχεια, χρησιμοποιήσαμε έναν ένθετο βρόχο. Ο πρώτος βρόχος είναι η επανάληψη φύλλων στο αρχικό αρχείο. Επόμενος βρόχος για αντιγραφή κάθε στήλης και επικόλληση σε κάθε φύλλο στο αρχείο results.xlsx.

Στο τέλος, αποθηκεύουμε το αποτέλεσμα του βιβλίου εργασίας.xlsx και το κλείνουμε. Και γίνεται.

Λοιπόν, ναι, έτσι μπορείτε να αντιγράψετε κάθε στήλη σε ένα νέο φύλλο στο excel χρησιμοποιώντας VBA. Αυτό το ζήτησε ο χρήστης μαςΜαχμούντ στην ενότητα σχολίων. Πίστευα ότι άξιζε ένα άρθρο για να είναι διαθέσιμο για όλους μας. Εδώ το έχετε. Ελπίζω να ήταν αρκετά επεξηγηματικό. Εάν εξακολουθείτε να έχετε οποιαδήποτε αμφιβολία ή οποιοδήποτε άλλο ερώτημα, ρωτήστε στην παρακάτω ενότητα σχολίων.

Διαχωρίστε το φύλλο Excel σε πολλά αρχεία με βάση τη στήλη χρησιμοποιώντας VBA | Αυτός ο κώδικας VBA διαχωρίζει τη βάση φύλλου excel σε μοναδικές τιμές σε μια καθορισμένη στήλη. Κατεβάστε το αρχείο εργασίας.

Απενεργοποιήστε τα μηνύματα προειδοποίησης χρησιμοποιώντας το VBA στο Microsoft Excel 2016 | Για να απενεργοποιήσουμε τα προειδοποιητικά μηνύματα που διακόπτουν τον τρέχοντα κώδικα VBA, χρησιμοποιούμε την κλάση Εφαρμογή.

Προσθήκη και αποθήκευση νέου βιβλίου εργασίας χρησιμοποιώντας το VBA στο Microsoft Excel 2016 | Για να προσθέσετε και να αποθηκεύσετε βιβλία εργασίας χρησιμοποιώντας VBA, χρησιμοποιούμε την τάξη βιβλίων εργασίας. Τετράδια εργασίας. Προσθέστε εύκολα νέο βιβλίο εργασίας, ωστόσο…

Δημοφιλή άρθρα:

50 συντομεύσεις Excel για να αυξήσετε την παραγωγικότητά σας | Γίνετε πιο γρήγοροι στην εργασία σας. Αυτές οι 50 συντομεύσεις θα σας κάνουν να εργάζεστε ακόμη πιο γρήγορα στο Excel.

Η συνάρτηση VLOOKUP στο Excel | Αυτή είναι μια από τις πιο δημοφιλείς και δημοφιλείς λειτουργίες του excel που χρησιμοποιείται για την αναζήτηση τιμών από διαφορετικά εύρη και φύλλα.

COUNTIF στο Excel 2016 | Μετρήστε τιμές με συνθήκες χρησιμοποιώντας αυτήν την εκπληκτική συνάρτηση. Δεν χρειάζεται να φιλτράρετε τα δεδομένα σας για να μετρήσετε συγκεκριμένη τιμή. Η λειτουργία Countif είναι απαραίτητη για την προετοιμασία του ταμπλό σας.

Πώς να χρησιμοποιήσετε τη συνάρτηση SUMIF στο Excel | Αυτή είναι μια άλλη βασική λειτουργία του ταμπλό. Αυτό σας βοηθά να συνοψίσετε τιμές υπό συγκεκριμένες συνθήκες.