Ένα απλό, με την πρώτη ματιά, πρόβλημα με μια μη προφανή λύση: εξάγετε την τελευταία λέξη από μια γραμμή κειμένου. Λοιπόν, ή, στη γενική περίπτωση, το τελευταίο θραύσμα, που χωρίζεται με έναν δεδομένο χαρακτήρα οριοθέτησης (κενό, κόμμα, κ.λπ.) Με άλλα λόγια, είναι απαραίτητο να εφαρμοστεί μια αντίστροφη αναζήτηση (από τέλος σε αρχή) στη συμβολοσειρά ενός δεδομένου χαρακτήρα και στη συνέχεια εξαγάγετε όλους τους χαρακτήρες στα δεξιά του.
Ας δούμε τους παραδοσιακά διάφορους τρόπους επιλογής: τύπους, μακροεντολές και μέσω του Power Query.
Μέθοδος 1. Φόρμουλες
Για να καταλάβουμε ευκολότερα την ουσία και τη μηχανική της φόρμουλας, ας ξεκινήσουμε λίγο από μακριά. Αρχικά, ας αυξήσουμε τον αριθμό των διαστημάτων μεταξύ των λέξεων στο κείμενο πηγής μας, για παράδειγμα, σε 20 κομμάτια. Μπορείτε να το κάνετε αυτό με τη λειτουργία αντικατάστασης. ΥΠΟΚΑΤΑΣΤΑΤΟ (ΥΠΟΚΑΤΑΣΤΑΤΟ) και η συνάρτηση της επανάληψης ενός δεδομένου χαρακτήρα N-φορές – ΕΠΑΝΑΛΗΨΗ (REPT):
Τώρα κόβουμε 20 χαρακτήρες από το τέλος του κειμένου που προκύπτει χρησιμοποιώντας τη συνάρτηση ΔΙΚΑΙΩΜΑ (ΣΩΣΤΑ):
Ζεσταίνει, σωστά; Απομένει να αφαιρέσετε επιπλέον χώρους χρησιμοποιώντας τη λειτουργία TRIM (ΤΑΚΤΟΠΟΙΗΣΗ) και το πρόβλημα θα λυθεί:
Στην αγγλική έκδοση, ο τύπος μας θα μοιάζει με αυτό:
=TRIM(ΔΕΞΙΑ(ΥΠΟΚΑΤΑΣΤΑΣΗ(A1;» «;REPT(» «;20));20))
Ελπίζω να είναι ξεκάθαρο ότι καταρχήν δεν είναι απαραίτητο να εισαγάγετε ακριβώς 20 κενά – οποιοσδήποτε αριθμός θα κάνει, αρκεί να είναι μεγαλύτερος από το μήκος της μεγαλύτερης λέξης στο κείμενο πηγής.
Και αν το κείμενο προέλευσης πρέπει να διαιρεθεί όχι με ένα κενό, αλλά με έναν άλλο διαχωριστικό χαρακτήρα (για παράδειγμα, με κόμμα), τότε ο τύπος μας θα πρέπει να διορθωθεί ελαφρώς:
Μέθοδος 2. Συνάρτηση Μακροεντολής
Η εργασία εξαγωγής της τελευταίας λέξης ή τμήματος από το κείμενο μπορεί επίσης να λυθεί χρησιμοποιώντας μακροεντολές, δηλαδή, γράφοντας μια συνάρτηση αντίστροφης αναζήτησης στη Visual Basic που θα κάνει ό,τι χρειαζόμαστε - αναζήτηση μιας δεδομένης υποσυμβολοσειράς σε μια συμβολοσειρά προς την αντίθετη κατεύθυνση - από το τέλος στην αρχή.
Πατήστε τη συντόμευση πληκτρολογίου άλλος+F11 ή κουμπί Visual Basic αυτί προγραμματιστή (Προγραμματιστής)για να ανοίξετε το πρόγραμμα επεξεργασίας μακροεντολών. Στη συνέχεια, προσθέστε μια νέα ενότητα μέσω του μενού Εισαγωγή – Ενότητα και αντιγράψτε τον παρακάτω κώδικα εκεί:
Συνάρτηση LastWord(txt Ως συμβολοσειρά, Προαιρετικό delim Ως συμβολοσειρά = " ", Προαιρετικό n ως ακέραιος = 1) Ως συμβολοσειρά arFragments = Split(txt, delim) LastWord = arFragments(UBound(arFragments) - n + 1) End Function
Τώρα μπορείτε να αποθηκεύσετε το βιβλίο εργασίας (σε μορφή με δυνατότητα μακροεντολής!) και να χρησιμοποιήσετε τη συνάρτηση που δημιουργήθηκε στην ακόλουθη σύνταξη:
=LastWord(txt ; delim ; n)
όπου
- txt – κελί με κείμενο προέλευσης
- περιορισμένη — διαχωριστικό χαρακτήρα (προεπιλογή — κενό)
- n – ποια λέξη πρέπει να εξαχθεί από το τέλος (από προεπιλογή – η πρώτη από το τέλος)
Με οποιεσδήποτε αλλαγές στο κείμενο προέλευσης στο μέλλον, η συνάρτηση μακροεντολής θα υπολογιστεί εκ νέου αμέσως, όπως κάθε τυπική συνάρτηση φύλλου Excel.
Μέθοδος 3. Power Query
Ερώτημα ισχύος είναι ένα δωρεάν πρόσθετο από τη Microsoft για την εισαγωγή δεδομένων στο Excel από σχεδόν οποιαδήποτε πηγή και στη συνέχεια τη μετατροπή των ληφθέντων δεδομένων σε οποιαδήποτε μορφή. Η ισχύς και η δροσιά αυτού του πρόσθετου είναι τόσο μεγάλη που η Microsoft έχει ενσωματώσει όλες τις δυνατότητες της στο Excel 2016 από προεπιλογή. Για το Excel 2010-2013 το Power Query μπορείτε να το κατεβάσετε δωρεάν από εδώ.
Το καθήκον μας να διαχωρίσουμε την τελευταία λέξη ή τμήμα μέσω ενός δεδομένου διαχωριστικού χρησιμοποιώντας το Power Query επιλύεται πολύ εύκολα.
Αρχικά, ας μετατρέψουμε τον πίνακα δεδομένων μας σε έναν έξυπνο πίνακα χρησιμοποιώντας συντομεύσεις πληκτρολογίου. Ctrl+T ή εντολές Αρχική σελίδα – Μορφοποίηση ως πίνακα (Αρχική σελίδα — Μορφοποίηση ως πίνακα):
Στη συνέχεια, φορτώνουμε τον δημιουργημένο «έξυπνο πίνακα» στο Power Query χρησιμοποιώντας την εντολή Από τραπέζι/σειρά (Από πίνακα/σειρά) αυτί ημερομηνία (εάν έχετε Excel 2016) ή στην καρτέλα Ερώτημα ισχύος (εάν έχετε Excel 2010-2013):
Στο παράθυρο επεξεργασίας ερωτημάτων που ανοίγει, στην καρτέλα Μεταμόρφωση (Μεταμορφώνω) επιλέξτε μια ομάδα Διαίρεση στήλης – Κατά οριοθέτη (Διαίρεση στήλης — Κατά οριοθέτη) και μετά απομένει να ορίσετε τον διαχωριστικό χαρακτήρα και να επιλέξετε την επιλογή Ο πιο δεξιός οριοθέτηςγια να μην κόψω όλες τις λέξεις, αλλά μόνο την τελευταία:
Μετά το κλικ OK η τελευταία λέξη θα διαχωριστεί σε μια νέα στήλη. Η περιττή πρώτη στήλη μπορεί να αφαιρεθεί κάνοντας δεξί κλικ στην κεφαλίδα της και επιλέγοντας ΑΦΑΙΡΕΣΗ (Διαγράφω). Μπορείτε επίσης να μετονομάσετε την υπόλοιπη στήλη στην κεφαλίδα του πίνακα.
Τα αποτελέσματα μπορούν να μεταφορτωθούν ξανά στο φύλλο χρησιμοποιώντας την εντολή Αρχική σελίδα — Κλείσιμο και φόρτωση — Κλείσιμο και φόρτωση σε… (Αρχική — Κλείσιμο & Φόρτωση — Κλείσιμο & Φόρτωση σε…):
Και ως αποτέλεσμα παίρνουμε:
Κάπως έτσι – φθηνό και χαρούμενο, χωρίς τύπους και μακροεντολές, σχεδόν χωρίς να αγγίζετε το πληκτρολόγιο 🙂
Εάν η αρχική λίστα αλλάξει στο μέλλον, αρκεί να κάνετε δεξί κλικ ή να χρησιμοποιήσετε μια συντόμευση πληκτρολογίου Ctrl+άλλος+F5 ενημερώστε το αίτημά μας.
- Διαχωρισμός κολλώδους κειμένου σε στήλες
- Ανάλυση και ανάλυση κειμένου με κανονικές εκφράσεις
- Εξαγωγή των πρώτων λέξεων από το κείμενο με τη συνάρτηση SUBSTITUTE