Πίνακας περιεχομένων
Σε αυτό το άρθρο, θα μάθετε πώς να διαγράφετε συγκεκριμένους χαρακτήρες από μια συμβολοσειρά κειμένου και να αφαιρείτε ανεπιθύμητους χαρακτήρες από πολλά κελιά ταυτόχρονα.
Κατά την εισαγωγή δεδομένων στο Excel από κάπου αλλού, ένα σωρό ειδικοί χαρακτήρες μπορεί να ταξιδέψουν στα φύλλα εργασίας σας. Αυτό που είναι ακόμη πιο απογοητευτικό είναι ότι ορισμένοι χαρακτήρες είναι αόρατοι, γεγονός που παράγει επιπλέον λευκό χώρο πριν, μετά ή μέσα σε συμβολοσειρές κειμένου. Αυτό το σεμινάριο παρέχει λύσεις για όλα αυτά τα προβλήματα, γλιτώνοντάς σας από τον κόπο να περάσετε από τα δεδομένα κελί-κελί και να καθαρίσετε ανεπιθύμηταχαρακτήρες με το χέρι.
Αφαίρεση ειδικού χαρακτήρα από το κελί του Excel
Για να διαγράψετε έναν συγκεκριμένο χαρακτήρα από ένα κελί, αντικαταστήστε τον με μια κενή συμβολοσειρά χρησιμοποιώντας τη συνάρτηση SUBSTITUTE στην απλούστερη μορφή της:
SUBSTITUTE( κύτταρο , char , "")Για παράδειγμα, για να διαγράψετε ένα ερωτηματικό από το Α2, ο τύπος στο Β2 είναι:
=SUBSTITUTE(A2, "?", "")
Για να αφαιρέσετε έναν χαρακτήρα που δεν υπάρχει στο πληκτρολόγιό σας, μπορείτε να τον αντιγράψετε/επικολλήσετε στον τύπο από το αρχικό κελί.
Για παράδειγμα, δείτε πώς μπορείτε να απαλλαγείτε από ένα ανεστραμμένο ερωτηματικό:
=SUBSTITUTE(A2, "¿", "")
Αλλά αν ένας ανεπιθύμητος χαρακτήρας είναι αόρατο ή δεν αντιγράφεται σωστά, πώς το βάζετε στον τύπο; Απλά, βρείτε τον κωδικό αριθμό του χρησιμοποιώντας τη συνάρτηση CODE.
Στην περίπτωσή μας, ο ανεπιθύμητος χαρακτήρας ("¿") έρχεται τελευταίος στο κελί Α2, οπότε χρησιμοποιούμε έναν συνδυασμό των συναρτήσεων CODE και RIGHT για να ανακτήσουμε τη μοναδική τιμή του κωδικού του, η οποία είναι 191:
=CODE(RIGHT(A2))
Μόλις λάβετε τον κωδικό του χαρακτήρα, δώστε την αντίστοιχη συνάρτηση CHAR στον παραπάνω γενικό τύπο. Για το σύνολο δεδομένων μας, ο τύπος έχει ως εξής:
=SUBSTITUTE(A2, CHAR(191),"")
Σημείωση. Η λειτουργία SUBSTITUTE είναι case-sensitive , που σημαίνει ότι αντιμετωπίζει τα πεζά και κεφαλαία γράμματα ως διαφορετικούς χαρακτήρες. Λάβετε αυτό υπόψη σας εάν ο ανεπιθύμητος χαρακτήρας σας είναι γράμμα.
Διαγραφή πολλαπλών χαρακτήρων από συμβολοσειρά
Σε ένα από τα προηγούμενα άρθρα, εξετάσαμε τον τρόπο αφαίρεσης συγκεκριμένων χαρακτήρων από συμβολοσειρές στο Excel με την ένθεση πολλών συναρτήσεων SUBSTITUTE η μία μέσα στην άλλη. Η ίδια προσέγγιση μπορεί να χρησιμοποιηθεί για την εξάλειψη δύο ή περισσότερων ανεπιθύμητων χαρακτήρων με μία κίνηση:
ΥΠΟΚΑΤΆΣΤΑΤΟ(ΥΠΟΚΑΤΆΣΤΑΤΟ(ΥΠΟΚΑΤΆΣΤΑΤΟ( κύτταρο , char1 , ""), char2 , ""), char3 , "")Για παράδειγμα, για να εξαλείψετε τα κανονικά θαυμαστικά και ερωτηματικά καθώς και τα ανεστραμμένα από μια συμβολοσειρά κειμένου στην Α2, χρησιμοποιήστε αυτόν τον τύπο:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2, "!", ""), "¡", ""), "?", ""), "¿", "")
Το ίδιο μπορεί να γίνει με τη βοήθεια της συνάρτησης CHAR, όπου 161 είναι ο κωδικός χαρακτήρων για το "¡" και 191 είναι ο κωδικός χαρακτήρων για το "¿":
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A3, "!", ""), "?", ""), CHAR(161), ""), CHAR(191), "")
Οι ένθετες συναρτήσεις SUBSTITUTE λειτουργούν καλά για έναν λογικό αριθμό χαρακτήρων, αλλά αν έχετε δεκάδες χαρακτήρες να αφαιρέσετε, ο τύπος γίνεται πολύ μεγάλος και δύσκολα διαχειρίσιμος. Το επόμενο παράδειγμα δείχνει μια πιο συμπαγή και κομψή λύση.
Αφαιρέστε όλους τους ανεπιθύμητους χαρακτήρες ταυτόχρονα
Η λύση λειτουργεί μόνο στο Excel για το Microsoft 365
Όπως πιθανώς γνωρίζετε, το Excel 365 διαθέτει μια ειδική συνάρτηση που σας επιτρέπει να δημιουργείτε τις δικές σας συναρτήσεις, συμπεριλαμβανομένων εκείνων που υπολογίζουν αναδρομικά. Αυτή η νέα συνάρτηση ονομάζεται LAMBDA, και μπορείτε να βρείτε όλες τις λεπτομέρειες σχετικά με αυτήν στο σεμινάριο που παρατίθεται παραπάνω. Παρακάτω, θα παρουσιάσω την έννοια με μερικά πρακτικά παραδείγματα.
Μια προσαρμοσμένη λειτουργία LAMBDA για να αφαίρεση ανεπιθύμητων χαρακτήρων έχει ως εξής:
=LAMBDA(string, chars, IF(chars"", RemoveChars(SUBSTITUTE(string, LEFT(chars, 1), ""), RIGHT(chars, LEN(chars) -1)), string))
Για να μπορέσετε να χρησιμοποιήσετε αυτή τη συνάρτηση στα φύλλα εργασίας σας, θα πρέπει πρώτα να της δώσετε όνομα. Για το σκοπό αυτό, πατήστε Ctrl + F3 για να ανοίξετε το παράθυρο Όνομα Διαχειριστής , και στη συνέχεια ορίστε ένα Νέο όνομα με αυτόν τον τρόπο:
- Στο Όνομα εισάγετε το όνομα της συνάρτησης: RemoveChars .
- Ορίστε την εμβέλεια σε Βιβλίο εργασίας .
- Στο Αναφέρεται σε πλαίσιο, επικολλήστε τον παραπάνω τύπο.
- Προαιρετικά, εισαγάγετε την περιγραφή των παραμέτρων στο πεδίο Σχόλια Οι παράμετροι θα εμφανίζονται όταν πληκτρολογείτε έναν τύπο σε ένα κελί.
- Κάντε κλικ στο OK για να αποθηκεύσετε τη νέα σας λειτουργία.
Για λεπτομερείς οδηγίες, ανατρέξτε στην ενότητα Πώς να ονομάσετε μια προσαρμοσμένη λειτουργία LAMBDA.
Μόλις η συνάρτηση αποκτήσει ένα όνομα, μπορείτε να αναφέρεστε σε αυτήν όπως σε οποιονδήποτε εγγενή τύπο.
Από τη σκοπιά του χρήστη, η σύνταξη της προσαρμοσμένης μας συνάρτησης είναι τόσο απλή όσο αυτή:
RemoveChars(string, chars)Πού:
- Συμβολοσειρά - είναι η αρχική συμβολοσειρά ή μια αναφορά στο κελί/περιοχή που περιέχει τη συμβολοσειρά(ες).
- Χαρακτήρες - χαρακτήρες προς διαγραφή. Μπορεί να αναπαρασταθεί με συμβολοσειρά κειμένου ή αναφορά κελιού.
Για ευκολία, εισάγουμε ανεπιθύμητους χαρακτήρες σε κάποιο κελί, ας πούμε το D2. Για να αφαιρέσουμε αυτούς τους χαρακτήρες από το A2, ο τύπος είναι:
=RemoveChars(A2, $D$2)
Για να λειτουργήσει σωστά η φόρμουλα, λάβετε υπόψη σας τα εξής:
- Στο D2, οι χαρακτήρες παρατίθενται χωρίς κενά, εκτός αν θέλετε να εξαλείψετε και τα κενά.
- Η διεύθυνση του κελιού που περιέχει τους ειδικούς χαρακτήρες κλειδώνεται με το σύμβολο $ ($D$2) για να μην αλλάξει η αναφορά όταν αντιγράφετε τον τύπο στα παρακάτω κελιά.
Και στη συνέχεια, απλά σύρουμε τον τύπο προς τα κάτω και διαγράφουμε όλους τους χαρακτήρες που αναφέρονται στο D2 από τα κελιά A2 έως A6:
Για να καθαρίσετε πολλαπλά κελιά με έναν μόνο τύπο, δώστε την περιοχή A2:A6 για το 1ο όρισμα:
=RemoveChars(A2:A6, D2)
Δεδομένου ότι ο τύπος εισάγεται μόνο στο πιο πάνω κελί, δεν χρειάζεται να ανησυχείτε για το κλείδωμα των συντεταγμένων του κελιού - μια σχετική αναφορά (D2) λειτουργεί άψογα σε αυτή την περίπτωση. Και λόγω της υποστήριξης δυναμικών πινάκων, ο τύπος διαχέεται αυτόματα σε όλα τα κελιά που αναφέρονται:
Κατάργηση ενός προκαθορισμένου συνόλου χαρακτήρων
Για να διαγράψετε ένα προκαθορισμένο σύνολο χαρακτήρων από πολλαπλά κελιά, μπορείτε να δημιουργήσετε ένα άλλο LAMBDA που καλεί την κύρια RemoveChars και καθορίστε τους ανεπιθύμητους χαρακτήρες στη 2η παράμετρο. Για παράδειγμα:
Για να διαγράψετε ειδικοί χαρακτήρες , έχουμε δημιουργήσει μια προσαρμοσμένη συνάρτηση με το όνομα RemoveSpecialChars :
=LAMBDA(string, RemoveChars(string, "?¿!¡*%#@^"))
Προς αφαίρεση αριθμών από συμβολοσειρές κειμένου, δημιουργήσαμε μια ακόμη συνάρτηση με το όνομα RemoveNumbers :
=LAMBDA(string, RemoveChars(string, "0123456789"))
Και οι δύο παραπάνω συναρτήσεις είναι εξαιρετικά εύκολες στη χρήση, καθώς απαιτούν μόνο ένα όρισμα - την αρχική συμβολοσειρά.
Για να εξαλείψετε ειδικοί χαρακτήρες από το Α2, ο τύπος είναι:
=RemoveSpecialChars(A2)
Για να διαγράψετε μόνο αριθμητικούς χαρακτήρες:
=RemoveNumbers(A2)
Πώς λειτουργεί αυτή η λειτουργία:
Στην ουσία, η RemoveChars η συνάρτηση κάνει βρόχους στη λίστα των chars και αφαιρεί έναν χαρακτήρα κάθε φορά. Πριν από κάθε αναδρομική κλήση, η συνάρτηση IF ελέγχει τα εναπομείναντα χαρακτήρες. Εάν η chars string δεν είναι κενό (chars""), η συνάρτηση καλεί τον εαυτό της. Μόλις επεξεργαστεί ο τελευταίος χαρακτήρας, ο τύπος επιστρέφει string τη σημερινή του μορφή και εξέρχεται.
Για τη λεπτομερή ανάλυση του τύπου, ανατρέξτε στην ενότητα Recursive LAMBDA για την αφαίρεση ανεπιθύμητων χαρακτήρων.
Αφαίρεση ειδικών χαρακτήρων με VBA
Οι λειτουργίες λειτουργούν σε όλες τις εκδόσεις του Excel
Εάν η συνάρτηση LAMBDA δεν είναι διαθέσιμη στο Excel σας, τίποτα δεν σας εμποδίζει να δημιουργήσετε μια παρόμοια συνάρτηση με VBA. Μια συνάρτηση που ορίζεται από το χρήστη (UDF) μπορεί να γραφτεί με δύο τρόπους.
Προσαρμοσμένη λειτουργία για τη διαγραφή ειδικών χαρακτήρων αναδρομική :
Αυτός ο κώδικας μιμείται τη λογική της συνάρτησης LAMBDA που συζητήθηκε παραπάνω.
Function RemoveUnwantedChars(str As String , chars As String ) If ( "" chars) Then str = Replace(str, Left(chars, 1), "" ) chars = Right(chars, Len(chars) - 1) RemoveUnwantedChars = RemoveUnwantedChars(str, chars) Else RemoveUnwantedChars = str End If End FunctionΠροσαρμοσμένη λειτουργία για την αφαίρεση ειδικών χαρακτήρων μη αναδρομική :
Εδώ, διατρέχουμε κυκλικά τους ανεπιθύμητους χαρακτήρες από το 1 έως το Len(chars) και αντικαθιστούμε αυτούς που βρέθηκαν στην αρχική συμβολοσειρά με τίποτα. Η συνάρτηση MID τραβάει τους ανεπιθύμητους χαρακτήρες έναν προς έναν και τους περνάει στη συνάρτηση Replace.
Function RemoveUnwantedChars(str As String , chars As String ) For index = 1 To Len(chars) str = Replace(str, Mid(chars, index, 1), "" ) Next RemoveUnwantedChars = str End FunctionΕισαγάγετε έναν από τους παραπάνω κωδικούς στο βιβλίο εργασίας σας, όπως εξηγήθηκε στην ενότητα Πώς να εισαγάγετε κώδικα VBA στο Excel, και η προσαρμοσμένη συνάρτησή σας είναι έτοιμη για χρήση.
Για να μην μπερδέψουμε τη νέα μας συνάρτηση που ορίζεται από τον χρήστη με τη συνάρτηση που ορίζεται από τη Lambda, την ονομάσαμε διαφορετικά:
RemoveUnwantedChars(string, chars)Υποθέτοντας ότι η αρχική συμβολοσειρά βρίσκεται στο A2 και οι ανεπιθύμητοι χαρακτήρες στο D2, μπορούμε να τους ξεφορτωθούμε χρησιμοποιώντας αυτόν τον τύπο:
= RemoveUnwantedChars(A2, $D$2)
Προσαρμοσμένη λειτουργία με σκληρά κωδικοποιημένους χαρακτήρες
Αν δεν θέλετε να ασχοληθείτε με την παροχή ειδικών χαρακτήρων για κάθε τύπο, μπορείτε να τους καθορίσετε απευθείας στον κώδικα:
Function RemoveSpecialChars(str As String ) As String Dim chars As String Dim index As Long chars = "?¿!¡*%#$(){}[]^&/\~+-" For index = 1 To Len(chars) str = Replace(str, Mid(chars, index, 1), "" ) Next RemoveSpecialChars = str End FunctionΛάβετε υπόψη ότι ο παραπάνω κώδικας είναι για σκοπούς επίδειξης. Για πρακτική χρήση, βεβαιωθείτε ότι έχετε συμπεριλάβει όλους τους χαρακτήρες που θέλετε να διαγράψετε στην επόμενη γραμμή:
chars = "?¿!¡*%#$(){}[]^&/\~+-"
Αυτή η προσαρμοσμένη συνάρτηση ονομάζεται RemoveSpecialChars και απαιτεί μόνο ένα όρισμα - την αρχική συμβολοσειρά:
RemoveSpecialChars(string)Για να αφαιρέσουμε τους ειδικούς χαρακτήρες από το σύνολο δεδομένων μας, ο τύπος είναι:
=RemoveSpecialChars(A2)
Αφαίρεση μη εκτυπώσιμων χαρακτήρων στο Excel
Το Microsoft Excel διαθέτει μια ειδική λειτουργία για τη διαγραφή μη εκτυπωμένων χαρακτήρων - τη λειτουργία CLEAN. Τεχνικά, αφαιρεί τους πρώτους 32 χαρακτήρες του συνόλου 7-bit ASCII (κωδικοί 0 έως 31).
Για παράδειγμα, για να διαγράψετε μη εκτυπώσιμοι χαρακτήρες από το Α2, ορίστε ο τύπος που πρέπει να χρησιμοποιήσετε:
=CLEAN(A2)
Αυτό θα εξαλείψει τους μη εκτυπωμένους χαρακτήρες, αλλά τα κενά πριν/μετά το κείμενο και μεταξύ των λέξεων θα παραμείνουν.
Για να απαλλαγείτε από επιπλέον χώροι , τυλίξτε τον τύπο CLEAN στη συνάρτηση TRIM:
=TRIM(CLEAN(A2))
Τώρα, αφαιρούνται όλα τα μπροστινά και τα πίσω διαστήματα, ενώ τα ενδιάμεσα διαστήματα μειώνονται σε έναν μόνο χαρακτήρα διαστήματος:
Αν θέλετε να διαγράψετε απολύτως όλοι οι χώροι μέσα σε μια συμβολοσειρά, τότε αντικαταστήστε επιπλέον τον χαρακτήρα space (κωδικός αριθμός 32) με μια κενή συμβολοσειρά:
=TRIM(CLEAN((SUBSTITUTE(A2, CHAR(32), ""))))
Κάποια κενά ή άλλοι αόρατοι χαρακτήρες παραμένουν ακόμα στο φύλλο εργασίας σας; Αυτό σημαίνει ότι οι χαρακτήρες αυτοί έχουν διαφορετικές τιμές στο σύνολο χαρακτήρων Unicode.
Για παράδειγμα, ο κωδικός χαρακτήρα ενός μη σπαστό διάστημα ( ) είναι 160 και μπορείτε να το καθαρίσετε χρησιμοποιώντας αυτόν τον τύπο:
=SUBSTITUTE(A2, CHAR(160)," ")
Για να διαγράψετε ένα συγκεκριμένος μη εκτυπωτικός χαρακτήρας , θα πρέπει πρώτα να βρείτε την τιμή του κωδικού του. Οι λεπτομερείς οδηγίες και τα παραδείγματα τύπων βρίσκονται εδώ: Πώς να αφαιρέσετε έναν συγκεκριμένο μη εκτυπωτικό χαρακτήρα.
Διαγραφή ειδικών χαρακτήρων με την Ultimate Suite
Υποστηρίζει το Excel για το Microsoft 365, Excel 2019 - 2010
Σε αυτό το τελευταίο παράδειγμα, επιτρέψτε μου να σας δείξω τον ευκολότερο τρόπο για να αφαιρέσετε ειδικούς χαρακτήρες στο Excel. Με εγκατεστημένη την Ultimate Suite, πρέπει να κάνετε τα εξής:
- Στο Δεδομένα Ablebits στην καρτέλα Κείμενο ομάδα, κάντε κλικ στο Αφαιρέστε το >, Αφαίρεση χαρακτήρων .
Σε λίγο, θα έχετε ένα τέλειο αποτέλεσμα:
Αν κάτι πάει στραβά, μην ανησυχείτε - ένα αντίγραφο ασφαλείας του φύλλου εργασίας σας θα δημιουργηθεί αυτόματα καθώς το Δημιουργήστε αντίγραφο αυτού του φύλλου εργασίας είναι προεπιλεγμένο από προεπιλογή.
Είστε περίεργοι να δοκιμάσετε το εργαλείο Αφαίρεσης; Ο σύνδεσμος για την έκδοση αξιολόγησης βρίσκεται ακριβώς από κάτω. Σας ευχαριστώ που διαβάσατε και ελπίζω να σας δω στο blog μας την επόμενη εβδομάδα!
Διαθέσιμες λήψεις
Διαγραφή ειδικών χαρακτήρων - παραδείγματα (.xlsm αρχείο)
Ultimate Suite - δοκιμαστική έκδοση (.exe αρχείο)