![]() |
Εξαφανιση αριθμων απο κελι με αριθμογραμματα 1 Συνημμένο(α) Καλησπέρα σε ένα αριθμό κελιών έχουμε αριθμούς και γράμματα μαζί,πχ Π1,Α4,Ν2κτλ.Αναρωτιέμαι εάν γίνεται με κάποιο τρόπο να φεύγουν οι αριθμοί και να μένουν μόνο τα γράμματα.Π,Α,Ν Ευχαριστώ |
1 Συνημμένο(α) Καλησπέρα. Αυτό το ζητούμενο, δεν μπορεί να γίνει με τύπους, ή καλύτερα δεν αξίζει να γίνει με τύπους, διότι θα πρέπει: Να γράψουμε σε διπλανή περιοχή τον τύπο, να τραβήξουμε δεξιά και κάτω, να αφήσουμε και την παλιά περιοχή ή να αντιγράψουμε το αποτέλεσμα ως τιμές, επάνω στην παλιά .... κλπ Από την άλλη, δεν είναι εύκολο να γίνει εφαρμογή σε κάθε στήσιμο φύλλου, που κάποιος χρήστης θα ήθελε... Πάμε λοιπόν σε μια λύση με κώδικα... Προσοχή: Συνιστάται μόνο για αλφαριθμητικά. Στο βιβλίο υπάρχει μια ρουτίνα, που εξαφανίζει τους αριθμούς, από κελιά με αλφαριθμητικά. Σημειώσεις: 1 Όπου Sh1, το κωδικό όνομα φύλλου. 2 Ο κώδικας, θα διαγράψει αριθμούς από την UsedRange του φύλλου. 3 Προσοχή, θα διαγραφούν όλοι οι αριθμοί, στην UsedRange, ακόμα κι αν σε ένα κελί, δεν υπάρχουν γράμματα... Οι ακέραιοι θετικοί, θα διαγραφούν. Οι ακέραιοι αρνητικοί, θα διαγραφούν, εκτός το (-). Αντίστοιχα οι δεκαδικοί θετικοί, θα διαγραφούν, εκτός το (,) και τέλος οι δεκαδικοί αρνητικοί, θα διαγραφούν, εκτός το (- και ,). Ακόμα... Οι ημερομηνίες μορφής 1/1/2018, θα διαγραφούν, εκτός τα (//) Επομένως, σκεφθείτε τι θέλετε, πριν τρέξει ο κώδικας... 4 Αν θέλετε να διαγράφει κατ' επιλογήν, αντικαταστήστε την γραμμή: Κώδικας: For Each c In Sh1.UsedRangeΚώδικας: For Each c In Selection |
Συμπληρωματικά... Αν θέλετε, να μην επηρεάζει αριθμούς ή ημερομηνίες, βάλτε την γραμμή: Κώδικας: If Not IsNumeric(c) And Not IsDate(c) ThenΚώδικας: End If*Αν θέλετε να εξαιρέσετε κάτι άλλο, γράψτε ένα σχόλιο... |
Ευχαριστώ για την απάντηση,ο πρώτος τρόπος μου κάνει μια χαρά. Χρησιμοποιώ όμως το δικό σας αρχείο,καθώς οι γνώσεις μου δεν φτάνουν τόσο μακριά ώστε να φτιάξω ένα δικό μου.Θα μελετήσω λίγο και αν δεν τα καταφέρω ίσως χρειαστώ λίγη βοήθεια. Και πάλι Ευχαριστώ. |
Να 'σαι καλά, καλή συνέχεια. |
Για όσους θέλουν να εμβαθύνουν περισσότερο και να πειραματιστούν... Η γραμμή: Κώδικας: .Pattern = "[0-9]"Θα μπορούσε κανείς, να την αντικαταστήσει με: .Pattern = "[Α-Ω]" *Γράμματα Ελληνικά κεφαλαία .Pattern = "[α-ω]" *Γράμματα Ελληνικά πεζά .Pattern = "[A-Z]" *Γράμματα Αγγλικά κεφαλαία .Pattern = "[a-z]" *Γράμματα Αγγλικά πεζά .Pattern = "[Α-Ω,0-9]" *Γράμματα Ελληνικά κεφαλαία σύν αριθμούς 0-9 .Pattern = "[a-c,0-9]" *Γράμματα Αγγλικά πεζά (μόνο a,b,c) σύν αριθμούς 0-9 .Pattern = "[ ]" *Κενά (space) σε επιλογή περιοχής, ώστε να ενωθούν κείμενα *τεστ 10 να γίνει τεστ10 κ.α.... και πιο σύνθετα: .Pattern = "[a-c,g,1-3,7]" *Γράμματα Αγγλικά πεζά (μόνο a,b,c και g) σύν αριθμούς 1-3 και 7 και πολλά άλλα, ανάλογα με τις ανάγκες, ώστε να διαγράφει κάθε φορά κάτι άλλο το οποίο θα μας ενδιέφερε να διαγραφεί... |
Νομίζω ότι θα μπορούσε να βοηθήσει και η μέθοδος της αντικατάστασης (Ctrl+H), αν δε θέλει/ξέρει κάποιος κώδικα VBA. Απλά θα πρέπει να τη χρησιμοποιήσει 10 φορές (όσα και τα ψηφία, 0 μέχρι 9). Κάθε φορά θα αντικαθιστά το κάθε ψηφίο με τίποτα (κενό χαρακτήρα, δηλαδή να αφήνει κενό το πεδίο Αντικατάσταση με/Replace with). |
Η μέθοδος είναι σωστή, αν έχουμε μια, άντε δυό αντικαταστάσεις-διαγραφές. Με αυτό το σκεπτικό άλλωστε (εύρεση κατ' αρχήν) δημιουργήθηκε... Από εκεί και μετά, είναι κουραστική και εμπεριέχει ρίσκο... Αν είχαμε ένα μοτίβο πχ ΝΗ(5) τότε τα πράγματα θα ήταν απλά, με αντικατάσταση: Όπου (*) τότε άλλαξέ το με...«τίποτα»... Η μόνη «συμφέρουσα» λύση (πλήν κώδικα) θα ήταν το Flash Fill αλλά ισχύει για 2013 και νεώτερο και δεν μπορεί να έχει εφαρμογή σε κάθε τύπο φύλλου (στήσιμο). |
| Η ώρα είναι 14:24. |
Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.