Αντικατάσταση κειμένου σε κελιά - Συμβουλές Excel

Πίνακας περιεχομένων

Ο Ζαν έθεσε την ερώτηση Excel αυτής της εβδομάδας:

Προσπαθώ να μετατρέψω ένα βιβλίο τιμών προμηθευτή στο Excel ώστε να ταιριάζει με τους κωδικούς UPC στο σύστημα κωδικών UPC. Το βιβλίο τιμών τους έχει μια στήλη στο Excel με μια σειρά αριθμών π.χ. 000004560007 Ή cel000612004. Αυτό που πρέπει να κάνω είναι δύο φορές. Πρέπει να βγάλω τα πρώτα τρία μηδενικά χωρίς να διαγράψω άλλα 0 στο κελί. Στη συνέχεια, πρέπει να προσθέσω έναν τριψήφιο κωδικό "upc" πριν από το πρώτο αριθμητικό ψηφίο στο κελί. Αυτή θα είναι μια συνεχής ανάγκη. Θα πρέπει να εκπαιδεύσω πολλούς ανθρώπους να χρησιμοποιούν το σύστημα Excel.

Φαίνεται ότι ο Jean έχει ήδη σκεφτεί να χρησιμοποιήσει το Edit-Replace για να απαλλαγούμε από τα τρία μηδενικά. Αυτό δεν θα λειτουργούσε επειδή η αντικατάσταση μιας τροποποίησης στο "000004560007" θα προκαλούσε την εξαφάνιση και των δύο εμφανίσεων του 000.

Πρώτα θέλω να προτείνω στον Jean να εισαγάγει μια προσωρινή στήλη δίπλα στους τρέχοντες κωδικούς τιμών, να γράψει έναν τύπο για να κάνει τον μετασχηματισμό και μετά να χρησιμοποιήσει το Edit-Copy, Edit-PasteSpecial-Values ​​για να αντιγράψει τον τύπο πίσω από τους αρχικούς κωδικούς τιμών.

Η συνάρτηση REPLACE () που δεν έχει τεκμηριωθεί θα κάνει το τέχνασμα σε αυτήν την περίπτωση. Ήμουν απογοητευμένος με την εφαρμογή του REPLACE (). Θα νόμιζα ότι θα ζητούσε ένα συγκεκριμένο κείμενο για αντικατάσταση, αλλά αντ 'αυτού ζητά από τον χρήστη να υπολογίσει τις θέσεις χαρακτήρων που θα αντικαταστήσουν. Το REPLACE θα αντικαταστήσει μέρος μιας συμβολοσειράς κειμένου με μια νέα συμβολοσειρά. Τα τέσσερα ορίσματα που μεταβιβάζετε στη συνάρτηση είναι το κελί που περιέχει το παλιό κείμενο, η θέση του χαρακτήρα σε παλιό κείμενο που θέλετε να αντικαταστήσετε, ο αριθμός των χαρακτήρων που θα αντικαταστήσετε και το νέο κείμενο που θα χρησιμοποιήσετε.

Η απλοποιητική μου υπόθεση είναι ότι τα τρία μηδενικά αντιπροσωπεύουν την έναρξη του κώδικα UPC στη συμβολοσειρά. Επομένως, δεν χρειάζεται να αναζητήσετε τον πρώτο αριθμητικό χαρακτήρα στο κελί. Μόλις ο τύπος εντοπίσει τα τρία μηδενικά, μπορεί να αντικαταστήσει αυτά τα τρία μηδενικά με τη συμβολοσειρά "upc".

Για να βρείτε τη θέση της πρώτης εμφάνισης του "000" στο κείμενο, θα χρησιμοποιήσετε αυτόν τον τύπο:

=FIND(A2,"000")

Ο τύπος που θα έπρεπε να εισαγάγει ο Jean στο κελί B2 θα ήταν:

=REPLACE(A2,FIND("000",A2),3,"upc")

Η σκέψη μου είναι να αναφέρω οι αναλυτές τιμολόγησης μια σειρά κελιών και στη συνέχεια να επικαλεσθούν αυτήν τη μακροεντολή. Η μακροεντολή θα χρησιμοποιήσει έναν βρόχο με "Για κάθε κελί στην επιλογή" στην αρχή. Με αυτόν τον βρόχο, το "κελί" γίνεται μια ειδική μεταβλητή εύρους. Μπορείτε να χρησιμοποιήσετε το cell.address ή το cell.value ή το cell.row για να βρείτε τη διεύθυνση, την τιμή ή τη σειρά του τρέχοντος κελιού στο βρόχο. Εδώ είναι η μακροεντολή:

Public Sub Jean() ' This macro will replace the first occurrence of "000" ' in each selected cell with the string "upc" ' copyright 1999 www.MrExcel.com For Each cell In Selection cell.Value = Replace(cell.Value, "000", "upc", 1, 1, vbTextCompare) Next cell End Sub

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

ενδιαφέροντα άρθρα...