Βίντεο: Excel Tips Αντιγραφή περιοχής κελιών σε άλλο φύλλο 2025
Έχετε ποτέ δοθεί ένα φύλλο εργασίας Excel με ονόματα στα οποία τα πλήρη ονόματα είναι όλα σε ένα κύτταρο? Ο στόχος σας είναι να σπάσετε τα ονόματα σε όνομα, επώνυμο - μια διαδικασία γνωστή ως ανάλυση. Μπορείτε να δοκιμάσετε να χρησιμοποιήσετε έναν τύπο ή / και μια συνάρτηση για να βοηθήσετε ή μπορείτε να χρησιμοποιήσετε τον κώδικα της Visual Basic for Applications (VBA).
Μια κοινή προσέγγιση είναι να βρεθεί ο χώρος ανάμεσα στο όνομα και το επώνυμο, και voila! - ξέρετε πού τελειώνει το πρώτο όνομα και ξεκινά το τελευταίο όνομα.
Εκτός αν έχετε ονόματα με πιο σύνθετη δομή, όπως ο Δρ. William Healer ή ο Zak H. Sneezer III.
Εδώ είναι μια τυπική ρουτίνα VBA που εξετάζει κάθε όνομα, χαρακτήρα από χαρακτήρα, μέχρι να βρει ένα κενό. Στη συνέχεια τοποθετεί ό, τι είναι στα αριστερά του χώρου σε μια στήλη και ό, τι είναι στα δεξιά του χώρου στη στήλη μετά.
Κάντε Μέχρι ActiveCell = "thename = ActiveCell.Αντιμή Για την εμφάνιση = 1 Για Len (τότεame) Εάν το Mid (τότεame, looking, 1) =" "Then ActiveCell.Offset (0, 1) (1, 0) Ενεργοποίηση Loop
Αυτή η ρουτίνα είναι χρήσιμη στην ανάλυση ονομάτων με ένα μόνο κενό, όπως ο Harvey Wallbanger ή ο Tom Collins Ο παρακάτω πίνακας δείχνει το αποτέλεσμα της εκτέλεσης του κώδικα σε ονόματα με περισσότερους από έναν χώρους:
Dr William Healer | Dr. William Healer | Ο Zak H. Sneezer III |
Zak | H. Sneezer III | Δεν είναι καλή προσπάθεια ανάλυσης. |
Εδώ είναι μια πιο εξελιγμένη τεχνική που επιστρέφει καλύτερα αποτελέσματα.
<
Η τεχνική είναι να μετράτε πόσοι χώροι είναι στο πλήρες όνομα και στη συνέχεια διαχωρίστε το όνομα σε ένα από τα κενά. Συγκεκριμένα, αν υπάρχουν τρεις ή περισσότεροι χώροι, χρησιμοποιήστε το κενό δύο προς τα δεξιά ως χώρο σπάσιμο. Διαφορετικά, χρησιμοποιήστε το κεντρικό διάστημα ως το σπάσιμο του χώρου.Αυτή η διαδικασία εκτελείται σε μια υπορουτίνα VBA που καλεί μια συνάρτηση ενώ βγαίνει μέσω των ονομάτων. Ο αριθμός των διαστημάτων καθορίζεται νωρίς στον κύριο βρόχο και η λειτουργία επιστρέφει τη θέση όπου βρίσκεται ο χώρος θραύσης.
Sub parse_names () Dim thename As String Διαστήματα Dim ως Ακέραιος μέχρι Μέχρι ActiveCell = "thename = ActiveCell.Δεδοχές Value = 0 Για test = 1 Για Len (τότεame) Εάν Mid (thename, test, 1) space = spaces + 1 Τέλος Αν Επόμενο Εάν διαστήματα> = 3 Στη συνέχεια break_space_position = space_position ("", thename, spaces - 1) Else break_space_position = space_position ("", thename, spaces) End If If spaces> 0 Then ActiveCell.Απόκλιση (0, 1) = Αριστερά (έπειτα όνομα, θέση περιστροφής_space - 1) ActiveCell. Offset (0, 2) = Mid (thename, break_space_position + 1) Else 'αυτό ισχύει όταν το πλήρες όνομα είναι ένα μόνο όνομα χωρίς διαστήματα ActiveCell. Απόκλιση (0, 1) = έπειτα Τέλος Αν ActiveCell. Μετατόπιση (1, 0). Ενεργοποιήστε τη συνάρτηση τελικού βρόχου Sub_space_position_position (what_to_look_for As String, what_to_look_in As String, space_count ως ακέραιος) Ως ακέραιο Dim loop_counter Ως ακέραιο space_position = 0 Για loop_counter = 1 Στο space_count space_position = InStr (loop_counter + space_position, what_to_look_in, what_to_look_for) Έπειτα Έξοδος για λειτουργία επόμενου τερματισμού
Ο παρακάτω πίνακας δείχνει ποιο είναι το αποτέλεσμα τώρα:
Dr. William Healer
Ο Δρ. William | Θεραπευτής | Zak H. Sneezer III |
Zak H. | Sneezer III | Η περιγραφή του ονόματος είναι εξίσου τέχνη με την τεχνική διαδικασία. Σε αυτό το δεύτερο παράδειγμα, όλα τα πρώτα και τελευταία ονόματα βρίσκονται στις σωστές στήλες. Αν εισάγεται ένα καινούργιο όνομα με πέντε ή περισσότερα κενά, η ρουτίνα μπορεί να πάρει λάθος την ανάλυση και ο κώδικας VBA θα χρειαστεί να τεθεί σε δοκιμασία υπό όρους. Αλλά αυτό το παράδειγμα βρίσκεται τώρα στο σωστό δρόμο ως ρουτίνα ονοματοδοσίας για βιομηχανική αντοχή. |