Πώς να επισημάνετε διπλότυπο κείμενο / λέξεις στο κελί του Excel

  • Μοιραστείτε Αυτό
Michael Brown

Το σεμινάριο δείχνει πώς να επισημάνετε διπλές λέξεις ή σειρές κειμένου μέσα σε ένα κελί χρησιμοποιώντας την VBA.

Η υπό όρους μορφοποίηση του Excel καθιστά δυνατή την επισήμανση των αντιγράφων με κάθε δυνατό τρόπο που μπορείτε να σκεφτείτε: με ή χωρίς 1η εμφάνιση, σε μία ή περισσότερες στήλες, διαδοχικά διπλά κελιά και ολόκληρες γραμμές με βάση τις ίδιες τιμές σε μια στήλη-κλειδί. Αλλά, ως συνήθως, υπάρχει ένα "αλλά". Οι κανόνες υπό όρους μορφοποίησης λειτουργούν σε επίπεδο κελιού, ενώ μπορεί να θέλετε να επισημάνετε τα διπλάκείμενο και όχι ολόκληρα κελιά. Αυτό μπορεί να γίνει μόνο με μακροεντολές. Ακόμη και αν δεν έχετε εμπειρία με την VBA, μη βιαστείτε να κλείσετε αυτή τη σελίδα. Εδώ θα βρείτε έτοιμα παραδείγματα κώδικα και τις λεπτομερείς οδηγίες για το πώς να τα χρησιμοποιήσετε στα φύλλα εργασίας σας.

    Επισημάνετε διπλές λέξεις σε ένα κελί αγνοώντας την περίπτωση κειμένου

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

    Ο κώδικας της μακροεντολής έχει ως εξής:

    Public Sub HighlightDupesCaseInsensitive() Dim Cell As Range Dim Delimiter As String Delimiter = InputBox( "Enter the delimiter that separates values in a cell" , "Delimiter" , ", " ) For Each Cell In Application.Selection Call HighlightDupeWordsInCell(Cell, Delimiter, False ) Next End Sub Sub HighlightDupeWordsInCell(Cell As Range, Optional Delimiter As String = " " , Optional CaseSensitive AsBoolean = True ) Dim text As String Dim words() As String Dim word As String Dim wordIndex, matchCount, positionInText As Integer If CaseSensitive Then words = Split(Cell.Value, Delimiter) Else words = Split(LCase(Cell.Value), Delimiter) End If For wordIndex = LBound (words) To UBound (words) - 1 word = words(wordIndex) matchCount = 0 For nextWordIndex = wordIndex + 1 To UBound (words) If word =words(nextWordIndex) Then matchCount = matchCount + 1 End If Next nextWordIndex If matchCount> 0 Then text = "" For Index = LBound (words) To UBound (words) text = text &? words(Index) If (words(Index) = word) Then Cell.Characters(Len(text) - Len(word) + 1, Len(word)).Font.Color = vbRed End If text = text & Delimiter Next End If Next wordIndex End Sub

    Επισήμανση διπλού κειμένου σε ένα κελί με ευαισθησία στην πεζότητα

    Στις περισσότερες περιπτώσεις, τείνουμε να αγνοούμε την πεζότητα των γραμμάτων όταν εργαζόμαστε με καταχωρήσεις κειμένου στο Excel. Υπό ορισμένες συνθήκες, ωστόσο, η πεζότητα του κειμένου έχει σημασία. Για παράδειγμα, αν έχετε να κάνετε με αναγνωριστικά, κωδικούς πρόσβασης ή άλλες εγγραφές αυτού του είδους, οι συμβολοσειρές όπως 1-AA , 1-αα και 1-Aa δεν είναι διπλότυπα και δεν πρέπει να επισημαίνονται:

    Σε αυτή την περίπτωση, χρησιμοποιήστε την ακόλουθη έκδοση του κώδικα:

    Public Sub HighlightDupesCaseSensitive() Dim Cell As Range Dim Delimiter As String Delimiter = InputBox( "Enter the delimiter that separates values in a cell" , "Delimiter" , ", " ) For Each Cell In Application.Selection Call HighlightDupeWordsInCell(Cell, Delimiter, True ) Next End Sub Sub HighlightDupeWordsInCell(Cell As Range, Optional Delimiter As String = " " , Optional CaseSensitive AsBoolean = True ) Dim text As String Dim words() As String Dim word As String Dim wordIndex, matchCount, positionInText As Integer If CaseSensitive Then words = Split(Cell.Value, Delimiter) Else words = Split(LCase(Cell.Value), Delimiter) End If For wordIndex = LBound (words) To UBound (words) - 1 word = words(wordIndex) matchCount = 0 For nextWordIndex = wordIndex + 1 To UBound (words) If word =words(nextWordIndex) Then matchCount = matchCount + 1 End If Next nextWordIndex If matchCount> 0 Then text = "" For Index = LBound (words) To UBound (words) text = text &? words(Index) If (words(Index) = word) Then Cell.Characters(Len(text) - Len(word) + 1, Len(word)).Font.Color = vbRed End If text = text & Delimiter Next End If Next wordIndex End Sub

    Πώς να χρησιμοποιήσετε τις μακροεντολές για να επισημάνετε διπλές λέξεις στο Excel

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

    Προσθέστε τον κώδικα στο βιβλίο εργασίας σας

    Ξεκινάτε με την εισαγωγή του κώδικα της μακροεντολής στο βιβλίο εργασίας του Excel:

    1. Ανοίξτε το βιβλίο εργασίας στο οποίο θέλετε να επισημάνετε τα διπλότυπα.
    2. Πατήστε Alt + F11 για να ανοίξετε τον επεξεργαστή της Visual Basic.
    3. Στο αριστερό παράθυρο, κάντε δεξί κλικ στο ThisWorkbook και επιλέξτε Εισαγωγή >, Ενότητα από το μενού περιβάλλοντος.
    4. Επικολλήστε τον κώδικα στο παράθυρο Κώδικας.
    5. Για να διατηρήσετε τη μακροεντολή για μελλοντική χρήση, φροντίστε να αποθηκεύσετε το βιβλίο εργασίας σας ως αρχείο .xlsm με δυνατότητα μακροεντολών.

    Εναλλακτικά, μπορείτε να κατεβάσετε το βιβλίο εργασίας του δείγματος και να εκτελέσετε τη μακροεντολή από εκεί. Το βιβλίο εργασίας του δείγματος περιέχει τις ακόλουθες μακροεντολές:

    • HighlightDupesCaseInsensitive - αποχρώσεις διπλότυπα μέσα σε ένα κελί, αγνοώντας την πεζότητα των γραμμάτων.
    • HighlightDupesCaseSensitive - αναδεικνύει τα διπλά σε ένα κελί λαμβάνοντας υπόψη την πεζότητα των γραμμάτων.

    Για περισσότερες πληροφορίες, ανατρέξτε στην ενότητα Πώς να εισαγάγετε κώδικα VBA στο Excel.

    Εκτελέστε τη μακροεντολή

    Με τον κώδικα να έχει προστεθεί στο δικό σας βιβλίο εργασίας ή με το αρχείο του δείγματός μας κατεβασμένο και ανοιχτό, εκτελέστε τη μακροεντολή με αυτόν τον τρόπο:

    1. Στο φύλλο εργασίας σας, επιλέξτε τα κελιά στα οποία θέλετε να επισημάνετε το διπλότυπο κείμενο. Αυτό μπορεί να είναι μια περιοχή ή πολλές μη γειτονικές περιοχές.
    2. Πατήστε Alt + F8 .
    3. Επιλέξτε τη μακροεντολή που σας ενδιαφέρει και κάντε κλικ στο Εκτέλεση .

    4. Η μακροεντολή θα σας ζητήσει να καθορίσετε το διαχωριστικό που διαχωρίζει τις τιμές στα επιλεγμένα κελιά. Το προκαθορισμένο διαχωριστικό (ένα κόμμα και ένα κενό στην περίπτωσή μας) θα εμφανιστεί αυτόματα στο πλαίσιο εισαγωγής. Ανάλογα με τις ανάγκες σας, μπορείτε να αφήσετε το προκαθορισμένο διαχωριστικό ή να πληκτρολογήσετε ένα διαφορετικό και, στη συνέχεια, να πατήσετε OK.

    Λίγο αργότερα, όλες οι διπλές συμβολοσειρές στα επιλεγμένα κελιά θα σκιαστούν με κόκκινο χρώμα (ή με οποιοδήποτε χρώμα γραμματοσειράς έχει οριστεί στον κώδικά σας).

    Συμβουλή. Για να αφαίρεση αντιγράφων μέσα σε ένα κελί, μπορείτε να χρησιμοποιήσετε το εργαλείο Remove Duplicate Substrings, ένα από τα πολλά εργαλεία εξοικονόμησης χρόνου που περιλαμβάνονται στην Ultimate Suite.

    Πώς να προσαρμόσετε τον κώδικα για τις ανάγκες σας

    Με αυτές τις σημειώσεις χρήσης και τις πολύ βασικές γνώσεις της VBA (ή απλώς ακολουθώντας πιστά τις παρακάτω οδηγίες), μπορείτε εύκολα να τροποποιήσετε τους κώδικες σύμφωνα ακριβώς με τις ανάγκες σας.

    Τοποθετήστε στην ίδια ενότητα

    Όπως μπορείτε να παρατηρήσετε, και οι δύο μακροεντολές ( HighlightDupesCaseSensitive και HighlightDupesCaseInsensitive ) καλεί το HighlightDupeWordsInCell Η διαφορά μεταξύ των δύο παραπάνω μακροεντολών έγκειται μόνο στην 3η παράμετρο (CaseSensitive) που περνάει στην εν λόγω συνάρτηση.

    Για αναζήτηση με ευαισθησία στην πεζότητα, ορίζεται σε TRUE:

    Κλήση HighlightDupeWordsInCell(Cell, Delimiter, True)

    Για αναζήτηση χωρίς ευαισθησία στην πεζότητα, ορίζεται σε FALSE:

    Κλήση HighlightDupeWordsInCell(Cell, Delimiter, False)

    Για να λειτουργήσουν οι μακροεντολές, ο κώδικας του HighlightDupeWordsInCell πρέπει να τοποθετείται στην ίδια ενότητα με τις μακροεντολές.

    Διαχωριστικό

    Όταν εκτελεστεί, η μακροεντολή θα σας ζητήσει να καθορίσετε το διαχωριστικό που διαχωρίζει τις λέξεις/σειρές στα επιλεγμένα κελιά. Το προεπιλεγμένο διαχωριστικό είναι ένα κόμμα και ένα κενό (", ") και είναι προκαθορισμένο στο InputBox:

    Delimiter = InputBox("Specify the delimiter that separates values in a cell", "Delimiter", ", ")

    Στον κώδικά σας, μπορείτε να χρησιμοποιήσετε οποιονδήποτε άλλο χαρακτήρα ως προκαθορισμένο διαχωριστικό.

    Χρώμα

    Από προεπιλογή, το HighlightDupeWordsInCell η συνάρτηση αποχρωματίζει τα αντίγραφα με κόκκινο χρώμα γραμματοσειράς. Το χρώμα ορίζεται σε αυτή τη γραμμή:

    Cell.Characters(positionInText, Len(word)).Font.Color = vbRed

    Εδώ, το vbRed είναι ένα είδος σταθεράς χρώματος της VBA. Για να εμφανίσετε τα διπλότυπα με διαφορετικό χρώμα, μπορείτε να αντικαταστήσετε το vbRed με μια άλλη σταθερά, όπως το vbGreen, vbYellow, vbBlue, κ.λπ. Η λίστα των υποστηριζόμενων σταθερών χρώματος μπορεί να βρεθεί εδώ.

    Αυτός είναι ο τρόπος για να επισημάνετε τις διπλές λέξεις στα κελιά του Excel. Σας ευχαριστώ για την ανάγνωση και ελπίζω να σας δω στο blog μας την επόμενη εβδομάδα!

    Διαθέσιμες λήψεις

    Παραδείγματα κώδικα για την επισήμανση των αντιγράφων σε ένα κελί (.xlsm αρχείο)

    Ultimate Suite 14 ημερών πλήρως λειτουργική έκδοση (.exe αρχείο)

    Ο Michael Brown είναι ένας αφοσιωμένος λάτρης της τεχνολογίας με πάθος για την απλοποίηση πολύπλοκων διαδικασιών χρησιμοποιώντας εργαλεία λογισμικού. Με περισσότερο από μια δεκαετία εμπειρίας στον κλάδο της τεχνολογίας, έχει βελτιώσει τις δεξιότητές του στο Microsoft Excel και το Outlook, καθώς και στα Φύλλα Google και στα Έγγραφα. Το blog του Michael είναι αφιερωμένο στο να μοιράζεται τη γνώση και την τεχνογνωσία του με άλλους, παρέχοντας εύκολες συμβουλές και σεμινάρια για τη βελτίωση της παραγωγικότητας και της αποτελεσματικότητας. Είτε είστε έμπειρος επαγγελματίας είτε αρχάριος, το ιστολόγιο του Michael προσφέρει πολύτιμες πληροφορίες και πρακτικές συμβουλές για να αξιοποιήσετε στο έπακρο αυτά τα βασικά εργαλεία λογισμικού.