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