Macro για να μετακινήσετε ή να αντιγράψετε δεδομένα μεταξύ των βιβλίων εργασίας του Excel

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

Macro για μετακίνηση ή αντιγραφή δεδομένων στο Excel

Ας πάρουμε μια υπόθεση στην οποία πρέπει να αντιγράψετε δεδομένα από ένα βιβλίο εργασίας και στη συνέχεια να τροποποιήσετε το περιεχόμενο σε ένα άλλο βιβλίο εργασίας. Σε αυτό το παράδειγμα, το βιβλίο εργασίας ένα (το βιβλίο εργασίας πηγής) έχει 1 2 3 4 5 και το βιβλίο εργασίας 2 έχει 6 7 8 9 0 .

Αφού εκτελέσετε τη μακροεντολή, το βιβλίο εργασίας πρέπει να έχει 6 7 8 9 0 1 2 3 4 5 . Οι μορφές και των δύο βιβλίων εργασίας είναι οι ίδιες.

Ακολουθεί μια μακροεντολή που θα μπορούσε να μεταφέρει και να προσθέσει τα δεδομένα σας. (Βεβαιωθείτε ότι έχετε διαβάσει τη ΣΗΜΕΙΩΣΗ στον κώδικα):

 Sub CopyData ()

Dim sBook_t ως συμβολοσειρά

Dim sBook_s ως συμβολοσειρά

Dim sSheet_t ως συμβολοσειρά

Dim sSheet_s ως συμβολοσειρά

Dim lMaxRows_t Όσο καιρό

Dim lMaxRows_s As Long

Dim sMaxCol_s ως συμβολοσειρά

Dim sRange_t ως συμβολοσειρά

Dim sRange_s ως συμβολοσειρά

sBook_t = "Δεδομένα στόχευσης WB - Αντιγραφή δεδομένων σε WB.xls"

sBook_s = "Δεδομένα Πηγή WB - Αντιγραφή δεδομένων σε WB.xls"

sSheet_t = "Target WB"

sSheet_s = "Πηγή"

lMaxRows_t = Βιβλία εργασίας (sBook_t). Φύλλα (sSheet_t) .Cells (Rows.Count, "A") Τέλος (xlUp) .Row

lMaxRows_s = Βιβλία εργασίας (sBook_s). Φύλλα (sSheet_s) .Cells (Rows.Count, "A") Τέλος (xlUp) .Row

sMaxCol_s = Βιβλία εργασίας (sBook_s). Φύλλα (sSheet_s) .Cells (1, Columns.Count) .End (xlToLeft) .Address

sMaxCol_s = Mid (sMaxCol_s, 2, InStr (2, sMaxCol_s, "$") - 2)

Αν (lMaxRows_t = 1) Στη συνέχεια

sRange_t = "A1:" & sMaxCol_s & lMaxRows_s

sRange_s = "A1:" & sMaxCol_s & lMaxRows_s

Βιβλία εργασίας (sBook_t). Φύλλα (sSheet_t) .Range (sRange_t) = Βιβλία εργασίας (sBook_s). Φύλλα (sSheet_s) .Range (sRange_s) .Value

Αλλού

sRange_t = "A" & (lMaxRows_t + 1) & ":" & sMaxCol_s & (lMaxRows_t + lMaxRows_s - 1)

sRange_s = "A2:" & sMaxCol_s & lMaxRows_s

Βιβλία εργασίας (sBook_t). Φύλλα (sSheet_t) .Range (sRange_t) = Βιβλία εργασίας (sBook_s). Φύλλα (sSheet_s) .Range (sRange_s) .Value

' ###################### ΣΗΜΕΙΩΣΗ #################

πρέπει να χρησιμοποιηθούν οι ακόλουθες γραμμές του σειριακού αριθμού, αντί να αντιγραφούν

'αν δεν υπάρχει ανάγκη, τότε διαγράψτε την παρακάτω γραμμή

Τα βιβλία εργασίας (sBook_t) .Sheets (sSheet_t) .Range ("A" & lMaxRows_t) .AutoFill Προορισμός: = Βιβλία εργασίας (sBook_t) .Sheets (sSheet_t) .Range ("A" & lMaxRows_t + lMaxRows_s - 1)), Τύπος: = xlFillSeries

Τέλος εαν

End Sub

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

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