Πίνακας περιεχομένων
Σε αυτό το σεμινάριο, θα εξετάσουμε διάφορους τρόπους εύρεσης και αντικατάστασης πολλαπλών λέξεων, συμβολοσειρών ή μεμονωμένων χαρακτήρων, ώστε να μπορείτε να επιλέξετε αυτόν που ταιριάζει καλύτερα στις ανάγκες σας.
Πώς κάνουν συνήθως οι άνθρωποι αναζήτηση στο Excel; Κυρίως, χρησιμοποιώντας τη λειτουργία Εύρεση & Αντικατάσταση, η οποία λειτουργεί καλά για μεμονωμένες τιμές. Τι γίνεται όμως αν έχετε δεκάδες ή και εκατοντάδες στοιχεία προς αντικατάσταση; Σίγουρα, κανείς δεν θα ήθελε να κάνει όλες αυτές τις αντικαταστάσεις χειροκίνητα μία προς μία, και στη συνέχεια να το κάνει ξανά από την αρχή όταν αλλάζουν τα δεδομένα. Ευτυχώς, υπάρχουν μερικές πιο αποτελεσματικές μέθοδοι για να κάνετε μαζική αντικατάσταση στο Excel, καιθα διερευνήσουμε κάθε ένα από αυτά λεπτομερώς.
Εύρεση και αντικατάσταση πολλαπλών τιμών με εμφωλευμένη SUBSTITUTE
Ο ευκολότερος τρόπος για να βρείτε και να αντικαταστήσετε πολλαπλές καταχωρήσεις στο Excel είναι η χρήση της συνάρτησης SUBSTITUTE.
Η λογική του τύπου είναι πολύ απλή: γράφετε μερικές μεμονωμένες συναρτήσεις για να αντικαταστήσετε μια παλιά τιμή με μια νέα. Και στη συνέχεια, τοποθετείτε αυτές τις συναρτήσεις τη μία μέσα στην άλλη, έτσι ώστε κάθε επόμενη ΥΠΟΣΤΟΙΧΙΑ να χρησιμοποιεί την έξοδο της προηγούμενης ΥΠΟΣΤΟΙΧΙΑΣ για να αναζητήσει την επόμενη τιμή.
ΥΠΟΚΑΤΆΣΤΑΤΟ(ΥΠΟΚΑΤΆΣΤΑΤΟ(ΥΠΟΚΑΤΆΣΤΑΤΟ( κείμενο , old_text1 , new_text1 ), old_text2 , new_text2 ), old_text3 , new_text3 )Στη λίστα των τοποθεσιών A2:A10, ας υποθέσουμε ότι θέλετε να αντικαταστήσετε τα συντομογραφημένα ονόματα χωρών (π.χ. FR , ΗΝΩΜΈΝΟ ΒΑΣΊΛΕΙΟ και ΗΠΑ ) με πλήρη ονόματα.
Για να γίνει αυτό, εισαγάγετε τις παλιές τιμές στο D2:D4 και τις νέες τιμές στο E2:E4, όπως φαίνεται στο παρακάτω στιγμιότυπο οθόνης. Και στη συνέχεια, βάλτε τον παρακάτω τύπο στο B2 και πατήστε Enter:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2:A10, D2, E2), D3, E3), D4, E4)
...και θα κάνετε όλες τις αντικαταστάσεις ταυτόχρονα:
Σημειώστε ότι η παραπάνω προσέγγιση λειτουργεί μόνο σε Excel 365 που υποστηρίζει δυναμικούς πίνακες.
Στις προ-δυναμικές εκδόσεις του Excel 2019, του Excel 2016 και παλαιότερα, ο τύπος πρέπει να γραφτεί για το πιο πάνω κελί (B2) και στη συνέχεια να αντιγραφεί στα παρακάτω κελιά:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2, $D$2, $E$2), $D$3, $E$3), $D$4, $E$4)
Προσέξτε ότι, σε αυτή την περίπτωση, κλειδώνουμε τις τιμές αντικατάστασης με απόλυτες αναφορές κελιών, ώστε να μην μετατοπίζονται κατά την αντιγραφή του τύπου προς τα κάτω.
Σημείωση. Η λειτουργία SUBSTITUTE είναι case-sensitive , δηλαδή θα πρέπει να πληκτρολογήσετε τις παλιές τιμές ( old_text ) με την ίδια γραμματοσειρά που εμφανίζονται στα αρχικά δεδομένα.
Όσο εύκολη και αν είναι, αυτή η μέθοδος έχει ένα σημαντικό μειονέκτημα - όταν έχετε δεκάδες στοιχεία προς αντικατάσταση, οι ένθετες συναρτήσεις είναι αρκετά δύσκολο να διαχειριστείτε.
Πλεονεκτήματα : εύκολη εφαρμογή- υποστηρίζεται σε όλες τις εκδόσεις του Excel
Μειονεκτήματα : καλύτερα να χρησιμοποιείται για περιορισμένο αριθμό τιμών εύρεσης/αντικατάστασης
Αναζήτηση και αντικατάσταση πολλαπλών καταχωρήσεων με το XLOOKUP
Σε περίπτωση που θέλετε να αντικαταστήσετε το ολόκληρο το περιεχόμενο του κελιού , όχι το μέρος του, η λειτουργία XLOOKUP είναι χρήσιμη.
Ας υποθέσουμε ότι έχετε μια λίστα χωρών στη στήλη Α και σκοπεύετε να αντικαταστήσετε όλες τις συντομογραφίες με τις αντίστοιχες πλήρεις ονομασίες. Όπως και στο προηγούμενο παράδειγμα, ξεκινάτε με την εισαγωγή των στοιχείων "Εύρεση" και "Αντικατάσταση" σε ξεχωριστές στήλες (Δ και Ε αντίστοιχα) και στη συνέχεια εισάγετε αυτόν τον τύπο στη Β2:
=XLOOKUP(A2, $D$2:$D$4, $E$2:$E$4, A2)
Μεταφρασμένος από τη γλώσσα του Excel στην ανθρώπινη γλώσσα, ο τύπος έχει ως εξής:
Αναζητήστε την τιμή A2 (lookup_value) στα D2:D4 (lookup_array) και επιστρέψτε μια αντιστοιχία από τα E2:E4 (return_array). Αν δεν βρεθεί, τραβήξτε την αρχική τιμή από το A2.
Κάντε διπλό κλικ στη λαβή γεμίσματος για να αντιγραφεί ο τύπος στα παρακάτω κελιά και το αποτέλεσμα δεν θα σας αφήσει να περιμένετε:
Δεδομένου ότι η συνάρτηση XLOOKUP είναι διαθέσιμη μόνο στο Excel 365, ο παραπάνω τύπος δεν θα λειτουργήσει σε προηγούμενες εκδόσεις. Ωστόσο, μπορείτε εύκολα να μιμηθείτε αυτή τη συμπεριφορά με έναν συνδυασμό IFERROR ή IFNA και VLOOKUP:
=IFNA(VLOOKUP(A2, $D$2:$E$4, 2, FALSE), A2)
Σημείωση. Σε αντίθεση με την SUBSTITUTE, οι λειτουργίες XLOOKUP και VLOOKUP είναι δεν είναι ευαίσθητο στις πεζές περιπτώσεις , που σημαίνει ότι αναζητούν τις τιμές αναζήτησης αγνοώντας την πεζότητα των γραμμάτων. Για παράδειγμα, ο τύπος μας θα αντικαθιστούσε και τα δύο FR και fr με Γαλλία .
Πλεονεκτήματα : ασυνήθιστη χρήση συνηθισμένων συναρτήσεων- λειτουργεί σε όλες τις εκδόσεις του Excel
Μειονεκτήματα : λειτουργεί σε επίπεδο κελιού, δεν μπορεί να αντικαταστήσει μέρος του περιεχομένου του κελιού
Πολλαπλή αντικατάσταση με χρήση αναδρομικής συνάρτησης LAMBDA
Για τους συνδρομητές του Microsoft 365, το Excel παρέχει μια ειδική λειτουργία που επιτρέπει τη δημιουργία προσαρμοσμένων συναρτήσεων χρησιμοποιώντας μια παραδοσιακή γλώσσα τύπων. Ναι, μιλάω για τη LAMBDA. Η ομορφιά αυτής της μεθόδου είναι ότι μπορεί να μετατρέψει έναν πολύ μακροσκελή και πολύπλοκο τύπο σε έναν πολύ συμπαγή και απλό. Επιπλέον, σας επιτρέπει να δημιουργήσετε τις δικές σας συναρτήσεις που δεν υπάρχουν στο Excel, κάτι που ήταν πρινδυνατή μόνο με VBA.
Για λεπτομερείς πληροφορίες σχετικά με τη δημιουργία και τη χρήση προσαρμοσμένων συναρτήσεων LAMBDA, ανατρέξτε σε αυτό το σεμινάριο: Πώς να γράφετε συναρτήσεις LAMBDA στο Excel. Εδώ, θα συζητήσουμε μερικά πρακτικά παραδείγματα.
Πλεονεκτήματα : το αποτέλεσμα είναι μια κομψή και εκπληκτικά απλή στη χρήση συνάρτηση, ανεξάρτητα από τον αριθμό των ζευγών αντικατάστασης
Μειονεκτήματα : διαθέσιμο μόνο στο Excel 365- αφορά μόνο το βιβλίο εργασίας και δεν μπορεί να επαναχρησιμοποιηθεί σε διαφορετικά βιβλία εργασίας.
Παράδειγμα 1. Αναζήτηση και αντικατάσταση πολλαπλών λέξεων / συμβολοσειρών ταυτόχρονα
Για να αντικαταστήσετε πολλές λέξεις ή κείμενο με μια κίνηση, δημιουργήσαμε μια προσαρμοσμένη συνάρτηση LAMBDA, με όνομα MultiReplace , η οποία μπορεί να λάβει μία από τις ακόλουθες μορφές:
=LAMBDA(text, old, new, IF(old"", MultiReplace(SUBSTITUTE(text, old, new), OFFSET(old, 1, 0), OFFSET(new, 1, 0)), text))
Ή
=LAMBDA(text, old, new, IF(old="", text, MultiReplace(SUBSTITUTE(text, old, new), OFFSET(old, 1, 0), OFFSET(new, 1, 0))))
Και οι δύο είναι αναδρομικές συναρτήσεις που καλούν τον εαυτό τους. Η διαφορά έγκειται μόνο στον τρόπο με τον οποίο καθορίζεται το σημείο εξόδου.
Στον πρώτο τύπο, η συνάρτηση IF ελέγχει αν η παλιό λίστα δεν είναι κενή (παλιό""). Εάν TRUE, η λίστα MultiReplace Αν είναι FALSE, η συνάρτηση επιστρέφει κείμενο την τρέχουσα μορφή του και εξέρχεται.
Ο δεύτερος τύπος χρησιμοποιεί την αντίστροφη λογική: εάν παλιό είναι κενό (old=""), τότε επιστρέψτε κείμενο και έξοδος- διαφορετικά καλέστε MultiReplace .
Το πιο δύσκολο κομμάτι έχει ολοκληρωθεί! Αυτό που απομένει να κάνετε είναι να ονομάσετε το MultiReplace στη Διαχείριση ονομάτων, όπως φαίνεται στο παρακάτω στιγμιότυπο οθόνης. Για λεπτομερείς οδηγίες, ανατρέξτε στην ενότητα Πώς να ονομάσετε μια λειτουργία LAMBDA.
Μόλις η συνάρτηση λάβει ένα όνομα, μπορείτε να τη χρησιμοποιήσετε όπως κάθε άλλη ενσωματωμένη συνάρτηση.
Όποια από τις δύο παραλλαγές του τύπου και αν επιλέξετε, από τη σκοπιά του τελικού χρήστη, η σύνταξη είναι τόσο απλή όσο αυτή:
MultiReplace(text, old, new)Πού:
- Κείμενο - τα δεδομένα της πηγής
- Παλιό - τις τιμές για να βρείτε
- Νέο - τις τιμές που θα αντικατασταθούν με
Προχωρώντας το προηγούμενο παράδειγμα λίγο παραπέρα, ας αντικαταστήσουμε όχι μόνο τις συντομογραφίες της χώρας αλλά και τις συντομογραφίες της πολιτείας. Για το σκοπό αυτό, πληκτρολογήστε τις συντομογραφίες ( παλιό τιμές) στη στήλη D που αρχίζει από D2 και τα πλήρη ονόματα ( νέο τιμές) στη στήλη Ε που αρχίζει από την Ε2.
Στο B2, εισαγάγετε τη λειτουργία MultiReplace:
=MultiReplace(A2:A10, D2, E2)
Πατήστε Enter και απολαύστε τα αποτελέσματα :)
Πώς λειτουργεί αυτή η φόρμουλα
Το κλειδί για την κατανόηση του τύπου είναι η κατανόηση της αναδρομής. Αυτό μπορεί να ακούγεται περίπλοκο, αλλά η αρχή είναι αρκετά απλή. Με κάθε επανάληψη, μια αναδρομική συνάρτηση λύνει μια μικρή περίπτωση ενός μεγαλύτερου προβλήματος. Στην περίπτωσή μας, η MultiReplace η συνάρτηση κάνει βρόχους στις παλιές και τις νέες τιμές και, σε κάθε βρόχο, εκτελεί μία αντικατάσταση:
MultiReplace (SUBSTITUTE(text, old, new), OFFSET(old, 1, 0), OFFSET(new, 1, 0))
Όπως και με τις εμφωλευμένες συναρτήσεις SUBSTITUTE, το αποτέλεσμα της προηγούμενης SUBSTITUTE γίνεται η κείμενο για την επόμενη SUBSTITUTE. Με άλλα λόγια, σε κάθε επόμενη κλήση της MultiReplace , η συνάρτηση SUBSTITUTE δεν επεξεργάζεται την αρχική συμβολοσειρά κειμένου, αλλά την έξοδο της προηγούμενης κλήσης.
Για να χειρίζεστε όλα τα στοιχεία στο παλιό λίστα, ξεκινάμε με το πιο πάνω κελί και χρησιμοποιούμε τη συνάρτηση OFFSET για να μετακινούμαστε 1 γραμμή προς τα κάτω με κάθε αλληλεπίδραση:
OFFSET(old, 1, 0)
Το ίδιο γίνεται και για το νέο λίστα:
OFFSET(new, 1, 0)
Το κρίσιμο πράγμα είναι να παρέχετε ένα σημείο εξόδου για να αποτρέψετε τις αναδρομικές κλήσεις από το να συνεχίζονται για πάντα. Αυτό γίνεται με τη βοήθεια της συνάρτησης IF - εάν η παλιό κελί είναι κενό, η συνάρτηση επιστρέφει κείμενο τη σημερινή του μορφή και εξέρχεται:
=LAMBDA(text, old, new, IF(old="", text, MultiReplace(...)))
ή
=LAMBDA(text, old, new, IF(old"", MultiReplace(...), text))
Παράδειγμα 2. Αντικατάσταση πολλαπλών χαρακτήρων στο Excel
Κατ' αρχήν, η MultiReplace που συζητήθηκε στο προηγούμενο παράδειγμα μπορεί να χειριστεί και μεμονωμένους χαρακτήρες, υπό την προϋπόθεση ότι κάθε παλιός και νέος χαρακτήρας εισάγεται σε ξεχωριστό κελί, ακριβώς όπως τα συντετμημένα και πλήρη ονόματα στα παραπάνω στιγμιότυπα οθόνης.
Αν προτιμάτε να εισάγετε τους παλιούς χαρακτήρες σε ένα κελί και τους νέους χαρακτήρες σε ένα άλλο κελί ή να τους πληκτρολογήσετε απευθείας στον τύπο, τότε μπορείτε να δημιουργήσετε μια άλλη προσαρμοσμένη συνάρτηση, με το όνομα ReplaceChars , χρησιμοποιώντας έναν από αυτούς τους τύπους:
=LAMBDA(text, old_chars, new_chars, IF(old_chars"", ReplaceChars(SUBSTITUTE(text, LEFT(old_chars), LEFT(new_chars)), RIGHT(old_chars, LEN(old_chars)-1), RIGHT(new_chars, LEN(new_chars)-1)), text))
Ή
=LAMBDA(text, old_chars, new_chars, IF(old_chars="", text, ReplaceChars(SUBSTITUTE(text, LEFT(old_chars), LEFT(new_chars)), RIGHT(old_chars, LEN(old_chars)-1), RIGHT(new_chars, LEN(new_chars)-1))))
Θυμηθείτε να ονομάσετε τη νέα σας συνάρτηση Lambda στη Διαχείριση ονομάτων ως συνήθως:
Και η νέα προσαρμοσμένη λειτουργία σας είναι έτοιμη για χρήση:
ReplaceChars(text, old_chars, new_chars)Πού:
- Κείμενο - οι αρχικές χορδές
- Παλιό - οι χαρακτήρες που θα αναζητήσετε
- Νέο - οι χαρακτήρες που θα αντικατασταθούν με
Για να το δοκιμάσετε στο πεδίο, ας κάνουμε κάτι που γίνεται συχνά σε εισαγόμενα δεδομένα - αντικαταστήστε τα έξυπνα εισαγωγικά και τα έξυπνα απόστροφα με ευθεία εισαγωγικά και ευθεία απόστροφα.
Πρώτον, εισάγουμε τα έξυπνα εισαγωγικά και την έξυπνη απόστροφο στο D2, τα ευθεία εισαγωγικά και την ευθεία απόστροφο στο E2, διαχωρίζοντας τους χαρακτήρες με κενά για καλύτερη αναγνωσιμότητα. (Καθώς χρησιμοποιούμε το ίδιο διαχωριστικό και στα δύο κελιά, δεν θα έχει καμία επίδραση στο αποτέλεσμα - το Excel απλώς θα αντικαταστήσει ένα κενό με ένα κενό.)
Μετά από αυτό, εισάγουμε αυτόν τον τύπο στο B2:
=ReplaceChars(A2:A4, D2, E2)
Και να έχουμε ακριβώς τα αποτελέσματα που αναζητούσαμε:
Είναι επίσης δυνατό να πληκτρολογήσετε τους χαρακτήρες απευθείας στον τύπο. Στην περίπτωσή μας, απλά θυμηθείτε να "διπλασιάσετε" τα ευθεία εισαγωγικά ως εξής:
=ReplaceChars(A2:A4, "" " " '", """ "" "" '")
Πώς λειτουργεί αυτή η φόρμουλα
Το ReplaceChars η συνάρτηση κάνει κύκλους μέσα από το old_chars και new_chars συμβολοσειρές και κάνει μία αντικατάσταση κάθε φορά ξεκινώντας από τον πρώτο χαρακτήρα στα αριστερά. Αυτό το μέρος γίνεται από τη συνάρτηση SUBSTITUTE:
SUBSTITUTE(text, LEFT(old_chars), LEFT(new_chars))
Με κάθε επανάληψη, η συνάρτηση RIGHT αφαιρεί έναν χαρακτήρα από το αριστερό μέρος και των δύο old_chars και new_chars συμβολοσειρές, έτσι ώστε η LEFT να μπορεί να πάρει το επόμενο ζεύγος χαρακτήρων για αντικατάσταση:
ReplaceChars(SUBSTITUTE(text, LEFT(old_chars), LEFT(new_chars)), RIGHT(old_chars, LEN(old_chars)-1), RIGHT(new_chars, LEN(new_chars)-1))
Πριν από κάθε αναδρομική κλήση, η συνάρτηση IF αξιολογεί το old_chars Αν δεν είναι κενή, η συνάρτηση καλεί τον εαυτό της. Μόλις αντικατασταθεί ο τελευταίος χαρακτήρας, η διαδικασία επανάληψης ολοκληρώνεται, ο τύπος επιστρέφει κείμενο τη σημερινή του μορφή και εξέρχεται.
Σημείωση. Επειδή η συνάρτηση SUBSTITUTE που χρησιμοποιείται στους βασικούς μας τύπους είναι case-sensitive , και οι δύο Lambdas ( MultiReplace και ReplaceChars ) αντιμετωπίζουν τα κεφαλαία και τα πεζά γράμματα ως διαφορετικούς χαρακτήρες.
Μαζική εύρεση και αντικατάσταση με UDF
Σε περίπτωση που η συνάρτηση LAMBDA δεν είναι διαθέσιμη στο Excel σας, μπορείτε να γράψετε μια συνάρτηση που ορίζεται από τον χρήστη για την πολλαπλή αντικατάσταση με παραδοσιακό τρόπο χρησιμοποιώντας το VBA.
Για να διακρίνεται το UDF από το LAMBDA-defined MultiReplace συνάρτηση, θα την ονομάσουμε διαφορετικά, ας πούμε MassReplace Ο κώδικας της συνάρτησης έχει ως εξής:
Function MassReplace(InputRng As Range, FindRng As Range, ReplaceRng As Range) As Variant () Dim arRes() As Variant 'πίνακας για την αποθήκευση των αποτελεσμάτων Dim arSearchReplace(), sTmp As String 'πίνακας όπου αποθηκεύονται τα ζεύγη εύρεσης/αντικατάστασης, προσωρινό αλφαριθμητικό Dim iFindCurRow, cntFindRows As Long 'δείκτης της τρέχουσας γραμμής του πίνακα SearchReplace, αριθμός γραμμών Dim iInputCurRow, iInputCurCol, cntInputRows,cntInputCols As Long 'δείκτης της τρέχουσας γραμμής στην περιοχή πηγής, δείκτης της τρέχουσας στήλης στην περιοχή πηγής, αριθμός γραμμών, αριθμός στηλών cntInputRows = InputRng.Rows.Count cntInputCols = InputRng.Columns.Count cntFindRows = FindRng.Rows.Count ReDim arRes(1 To cntInputRows, 1 To cntInputCols) ReDim arSearchReplace(1 To cntFindRows, 1 To 2) 'προετοιμασία του πίνακα των ζευγών εύρεσης/αντικατάστασης ForiFindCurRow = 1 To cntFindRows arSearchReplace(iFindCurRow, 1) = FindRng.Cells(iFindCurRow, 1).Value arSearchReplace(iFindCurRow, 2) = ReplaceRng.Cells(iFindCurRow, 1).Value Next 'Αναζήτηση και αντικατάσταση στην περιοχή προέλευσης For iInputCurRow = 1 To cntInputRows For iInputCurCol = 1 To cntInputCols sTmp = InputRng.Cells(iInputCurRow, iInputCurCol).Value 'Αντικατάσταση όλων των ζευγών εύρεσης/αντικατάστασης σε κάθε κελί.For iFindCurRow = 1 To cntFindRows sTmp = Replace(sTmp, arSearchReplace(iFindCurRow, 1), arSearchReplace(iFindCurRow, 2)) Next arRes(iInputCurRow, iInputCurCol) = sTmp Next Next Next MassReplace = arRes End FunctionΌπως και οι συναρτήσεις που ορίζονται από τη LAMBDA, οι UDF είναι σε όλο το βιβλίο εργασίας Αυτό σημαίνει ότι η MassReplace θα λειτουργήσει μόνο στο βιβλίο εργασίας στο οποίο έχετε εισάγει τον κώδικα. Αν δεν είστε σίγουροι πώς να το κάνετε σωστά, ακολουθήστε τα βήματα που περιγράφονται στην ενότητα Πώς να εισάγετε κώδικα VBA στο Excel.
Μόλις ο κώδικας προστεθεί στο βιβλίο εργασίας σας, η συνάρτηση θα εμφανιστεί στο intellisense του τύπου - μόνο το όνομα της συνάρτησης, όχι τα ορίσματα! Αν και πιστεύω ότι δεν είναι μεγάλη υπόθεση να θυμάστε τη σύνταξη:
MassReplace(input_range, find_range, replace_range)Πού:
- Input_range - την περιοχή πηγής όπου θέλετε να αντικαταστήσετε τις τιμές.
- Find_range - τους χαρακτήρες, τις συμβολοσειρές ή τις λέξεις που θα αναζητήσετε.
- Replace_range - τους χαρακτήρες, τις συμβολοσειρές ή τις λέξεις με τις οποίες θα αντικατασταθούν.
Στο Excel 365, λόγω της υποστήριξης δυναμικών πινάκων, αυτό λειτουργεί ως κανονικός τύπος, ο οποίος πρέπει να εισαχθεί μόνο στο επάνω κελί (B2):
=MassReplace(A2:A10, D2:D4, E2:E4)
Στο προ-δυναμικό Excel, αυτό λειτουργεί ως τύπος συστοιχίας CSE παλαιού τύπου: επιλέγετε ολόκληρη την περιοχή πηγής (B2:B10), πληκτρολογείτε τον τύπο και πατάτε ταυτόχρονα τα πλήκτρα Ctrl + Shift + Enter για να τον ολοκληρώσετε.
Πλεονεκτήματα : μια αξιοπρεπής εναλλακτική λύση σε μια προσαρμοσμένη συνάρτηση LAMBDA στο Excel 2019, το Excel 2016 και προηγούμενες εκδόσεις
Μειονεκτήματα : το βιβλίο εργασίας πρέπει να αποθηκευτεί ως αρχείο .xlsm με δυνατότητα μακροεντολών
Μαζική αντικατάσταση στο Excel με μακροεντολή VBA
Αν σας αρέσει η αυτοματοποίηση κοινών εργασιών με μακροεντολές, τότε μπορείτε να χρησιμοποιήσετε τον ακόλουθο κώδικα VBA για να βρείτε και να αντικαταστήσετε πολλαπλές τιμές σε ένα εύρος τιμών.
Sub BulkReplace() Dim Rng As Range, SourceRng As Range, ReplaceRng As Range On Error Resume Next Set SourceRng = Application.InputBox( "Source data:" , "Bulk Replace" , Application.Selection.Address, Type :=8) Err.Clear If Not SourceRng Is Nothing Then Set ReplaceRng = Application.InputBox( "Replace range:" , "Bulk Replace" , Type :=8) Err.Clear If Not ReplaceRng Is Nothing ThenApplication.ScreenUpdating = False For Each Rng In ReplaceRng.Columns(1).Cells SourceRng.Replace what:=Rng.Value, replacement:=Rng.Offset(0, 1).Value Next Application.ScreenUpdating = True End If End If End SubΓια να χρησιμοποιήσετε τη μακροεντολή αμέσως, μπορείτε να κατεβάσετε το δείγμα του βιβλίου εργασίας που περιέχει τον κώδικα. Ή μπορείτε να εισαγάγετε τον κώδικα στο δικό σας βιβλίο εργασίας.
Πώς να χρησιμοποιήσετε τη μακροεντολή
Πριν από την εκτέλεση της μακροεντολής, πληκτρολογήστε την παλιά και τη νέα τιμή σε δύο γειτονικές στήλες, όπως φαίνεται στην παρακάτω εικόνα (C2:D4).
Και στη συνέχεια, επιλέξτε τα δεδομένα της πηγής σας, πατήστε Alt + F8 , επιλέξτε το BulkReplace μακροεντολή, και κάντε κλικ στο Εκτέλεση .
Καθώς η πηγή οργής είναι προεπιλεγμένη, απλώς επαληθεύστε την αναφορά και κάντε κλικ στο OK:
Μετά από αυτό, επιλέξτε το αντικαταστήστε το εύρος και κάντε κλικ στο OK:
Έγινε!
Πλεονεκτήματα : ρύθμιση μία φορά, επαναχρησιμοποίηση ανά πάσα στιγμή
Μειονεκτήματα : η μακροεντολή πρέπει να εκτελείται με κάθε αλλαγή δεδομένων
Πολλαπλή εύρεση και αντικατάσταση στο Excel με το εργαλείο Substring
Στο πρώτο κιόλας παράδειγμα, ανέφερα ότι η εμφωλευμένη SUBSTITUTE είναι ο ευκολότερος τρόπος αντικατάστασης πολλαπλών τιμών στο Excel. Παραδέχομαι ότι έκανα λάθος. Η Ultimate Suite μας κάνει τα πράγματα ακόμα πιο εύκολα!
Για να πραγματοποιήσετε μαζική αντικατάσταση στο φύλλο εργασίας σας, μεταβείτε στην ενότητα Δεδομένα Ablebits και κάντε κλικ στην καρτέλα Εργαλεία υποσέλιξης >, Αντικατάσταση υποσυνόλων .
Το Αντικατάσταση υποσυνόλων θα εμφανιστεί παράθυρο διαλόγου που θα σας ζητήσει να ορίσετε το Πηγή εύρος και Υποσύνολα εύρος.
Με επιλεγμένες τις δύο περιοχές, κάντε κλικ στο κουμπί Αντικαταστήστε το και βρείτε τα αποτελέσματα σε μια νέα στήλη που εισάγεται στα δεξιά των αρχικών δεδομένων. Ναι, είναι τόσο εύκολο!
Συμβουλή. Πριν κάνετε κλικ στο Αντικαταστήστε το , υπάρχει ένα σημαντικό πράγμα που πρέπει να λάβετε υπόψη σας - η Ευαίσθητη ως προς την πεζότητα Βεβαιωθείτε ότι την επιλέγετε αν θέλετε να χειρίζεστε τα κεφαλαία και τα πεζά γράμματα ως διαφορετικούς χαρακτήρες. Σε αυτό το παράδειγμα, τσεκάρουμε αυτή την επιλογή επειδή θέλουμε να αντικαταστήσουμε μόνο τις συμβολοσειρές με κεφαλαία και να αφήσουμε άθικτες τις υποσυμβολοσειρές όπως "fr", "uk" ή "ak" μέσα σε άλλες λέξεις.
Αν είστε περίεργοι να μάθετε ποιες άλλες μαζικές λειτουργίες μπορούν να εκτελεστούν σε συμβολοσειρές, δείτε τα άλλα Εργαλεία Substring που περιλαμβάνονται στην Ultimate Suite. Ή ακόμα καλύτερα, κατεβάστε την έκδοση αξιολόγησης παρακάτω και δοκιμάστε την!
Αυτός είναι ο τρόπος για να βρείτε και να αντικαταστήσετε πολλές λέξεις και χαρακτήρες ταυτόχρονα στο Excel. Σας ευχαριστώ που διαβάσατε και ελπίζω να σας δω στο blog μας την επόμενη εβδομάδα!
Διαθέσιμες λήψεις
Πολλαπλή εύρεση και αντικατάσταση στο Excel (.xlsm αρχείο)
Ultimate Suite 14 ημερών πλήρως λειτουργική έκδοση (.exe αρχείο)