Γνωρίζει κάποιος, πώς πρέπει να γράψω στο Excel δύο συναρτήσεις που να κάνουν τα εξής;
1. Η μία να αποδίδει μία πρόταση ενός άλλου κελιού, έχοντας όμως αφαιρέσει τα σημεία στίξης.
2. Η δεύτερη να αποδίδει μία πρόταση ενός άλλου κελιού, έχοντας αντικαταστήσει τα τονισμένα γράμματα με άτονα.
Ως τώρα το έχω φτιάξει με έμμεσο τρόπο, έχοντας χωρίσει πρώτα την πρόταση σε γράμματα, και ξαναενώνοντάς την, μετά τις αλλαγές. Υπάρχει όμως τρόπος, να κάνω το ίδιο πράγμα, αποφεύγοντας την περιπλοκότητα, δηλαδή χωρίς να χωρίσω την πρόταση σε γράμματα;
Ευχαριστώ!
Εμφάνιση 1-15 από 16
-
18-11-19, 12:17 Συναρτήσεις αντικατάστασης συμβόλων σε κείμενο #1
Τελευταία επεξεργασία από το μέλος Nikrom : 19-11-19 στις 11:16.
-
18-11-19, 21:35 Απάντηση: Συναρτήσεις αντικατάστασης συμβόλων σε κείμενο #2
Γίνεται με πολλές ένθετες SUBSTITUDE. Στην πρώτη περίπτωση αντικαθιστώντας τα σημεία στίξης με κενά, στην δεύτερη, αντικαθιστώντας τα τονισμένα γράμματα με άτονα.
-
19-11-19, 06:58 Απάντηση: Συναρτήσεις αντικατάστασης συμβόλων σε κείμενο #3
Δεν αναφέρεις σε ποια γλώσσα, αλλά οι περισσότερες διαχειρίζονται τα strings περίπου σαν arrays, οπότε δεν έχεις λόγο να τη χωρίσεις πρώτα.
-
19-11-19, 11:16 Απάντηση: Συναρτήσεις αντικατάστασης συμβόλων σε κείμενο #4
Ευχαριστώ για τις απαντήσεις. Συγνώμη, ξέχασα να πω ότι τη θέλω για το Excel. Οπότε αν δεν κάνω λάθος, είναι Βίζουαλ Μπέισικ.
Το πρόβλημα είναι ότι δεν ξέρω πώς να βάλω ένθετες SUBSTITUDE, επειδή οι οδηγίες για κάτι τέτοιο είναι σε ξένη γλώσσα, και όταν διαβάζω στα Ελληνικά σχετικές οδηγίες για ένθετες συναρτήσεις, είναι κακομεταφρασμένες και δεν βγάζω άκρη.
Πώς θα έγραφα τρεις τέτοιες ένθετες, ώστε να καταλάβω πώς να φτιάξω περισσότερες;
-
19-11-19, 13:16 Απάντηση: Συναρτήσεις αντικατάστασης συμβόλων σε κείμενο #5
Π.χ. ο τύπος =SUBSTITUTE(A1;"ά";"α") θα αντικαταστήσει το ά με το α. Ο τύπος =SUBSTITUTE(SUBSTITUTE(A1;"ά";"α");"έ";"ε"), στην πρόταση που θα προκύψει χωρίς το ά, θα αντικαταστήσει το έ με το ε κ.ο.κ.
Επειδή η SUBSTITUTE κάνει διάκριση πεζών-κεφαλαίων, χρειαζόμαστε 7 SUBSTITUDE για τα πεζά, συν άλλες 7 για τα κεφαλαία, συν 2 για τις περιπτώσεις ΐ και ΰ, που θα αντικαθίστανται με το ϊ και ϋ αντιστοίχως, συνολικά 16 (στο παράδειγμα έχουμε 2, διότι 2 είναι τα γράμματα). Ένα μακρινάρι δηλαδή με την μια SUBSTITUDE ένθετη μέσα στην άλλη.
Το ανάλογο θα γίνει με τα σημεία στίξης, μόνο που θα τα αντικαθιστάς με κενά, δηλαδή "".
-
19-11-19, 13:38 Απάντηση: Συναρτήσεις αντικατάστασης συμβόλων σε κείμενο #6
Ευχαριστώ πολύ φίλε μου ΑνδρέαΝ. Τα κατάλαβα!
Θα το βάλω άμεσα σε εφαρμογή στο Μποτ μου.
Τελικά αυτό το φόρουμ αξίζει πολύ!
-
19-11-19, 13:57 Απάντηση: Συναρτήσεις αντικατάστασης συμβόλων σε κείμενο #7
Δεν είναι Visual Basic, είναι Visual Basic for Applications (VBA) η οποία διαφέρει από την Visual Basic. Ναι μεν έχουν ίδια σύνταξη αλλά δεν έχουν ίδιες λειτουργίες.
Το ακόλουθο κάνει τις αντικαταστάσεις από τόνους σε χωρίς, αφαιρεί τα σύμβολα (κάποια) και μετατρέπει τα κεφαλαία σε μικρά. Το "vbTextCompare" θεωρεί ότι τα πεζά και τα κεφαλαία είναι ίδια, οπότε αντικαταστώντας το "α" με "α" το κεφαλαίο γίνεται αυτόματα μικρό, αντίστοιχα και με τα τονισμένα μετατρέπονται σε μικρά χωρίς τόνους.
Κώδικας:Dim str1 As String str1 = "αΆ/ε\\έιίΪ,ΐυΎϋΰ.οΟΩω" str1 = Replace(str1, "α", "α", , , vbTextCompare) str1 = Replace(str1, "ά", "α", , , vbTextCompare) str1 = Replace(str1, "ι", "ι", , , vbTextCompare) str1 = Replace(str1, "ί", "ι", , , vbTextCompare) str1 = Replace(str1, "ϊ", "ι", , , vbTextCompare) str1 = Replace(str1, "ΐ", "ι", , , vbTextCompare) str1 = Replace(str1, "η", "η", , , vbTextCompare) str1 = Replace(str1, "ή", "η", , , vbTextCompare) str1 = Replace(str1, "υ", "υ", , , vbTextCompare) str1 = Replace(str1, "ύ", "υ", , , vbTextCompare) str1 = Replace(str1, "ο", "ο", , , vbTextCompare) str1 = Replace(str1, "ό", "ο", , , vbTextCompare) str1 = Replace(str1, "ω", "ω", , , vbTextCompare) str1 = Replace(str1, "ώ", "ω", , , vbTextCompare) str1 = Replace(str1, ".", "", , , vbTextCompare) str1 = Replace(str1, ",", "", , , vbTextCompare) str1 = Replace(str1, ":", "", , , vbTextCompare) str1 = Replace(str1, ";", "", , , vbTextCompare) str1 = Replace(str1, "\\", "", , , vbTextCompare) str1 = Replace(str1, "/", "", , , vbTextCompare) Debug.Print (str1)
Αν τα κείμενά σου είναι πολλά και/ή μεγάλα το καλύτερο είναι αυτό που έκανες μέχρι τώρα. Δηλαδή διαβάζεις το string χαρακτήρα χαρακτήρα, και κάνεις όλες τις αντικαταστάσεις ταυτόχρονα.
Κώδικας:Function NormalizeString(str) As String Dim ret As String Remove = Array(".", ",", ":", ";", "\", "/") For i = 1 To Len(str) c = Mid(str, i, 1) c = Replace(c, "α", "α", , , vbTextCompare) c = Replace(c, "ά", "α", , , vbTextCompare) c = Replace(c, "ε", "ε", , , vbTextCompare) c = Replace(c, "έ", "ε", , , vbTextCompare) c = Replace(c, "η", "η", , , vbTextCompare) c = Replace(c, "ή", "η", , , vbTextCompare) c = Replace(c, "ι", "ι", , , vbTextCompare) c = Replace(c, "ί", "ι", , , vbTextCompare) c = Replace(c, "ϊ", "ι", , , vbTextCompare) c = Replace(c, "ΐ", "ι", , , vbTextCompare) c = Replace(c, "ο", "ο", , , vbTextCompare) c = Replace(c, "ό", "ο", , , vbTextCompare) c = Replace(c, "υ", "υ", , , vbTextCompare) c = Replace(c, "ύ", "υ", , , vbTextCompare) c = Replace(c, "ϋ", "υ", , , vbTextCompare) c = Replace(c, "ΰ", "υ", , , vbTextCompare) c = Replace(c, "ω", "ω", , , vbTextCompare) c = Replace(c, "ώ", "ω", , , vbTextCompare) For Each r In Remove If c = r Then c = "" GoTo AfterRemove End If Next AfterRemove: ret = ret + c Next NormalizeString = ret End Function
-
19-11-19, 18:23 Απάντηση: Συναρτήσεις αντικατάστασης συμβόλων σε κείμενο #8
Ευχαριστώ κι εσένα MitsakoGR, αν και η συνάρτηση τού φίλου ΑνδρέαΜ δουλεύει πολύ καλά.
Αυτό που είχα έναν - έναν χαρακτήρα, εκτός τού ότι μου έπαιρνε μεγάλες εκτάσεις κελιών με συναρτήσεις, είχε και το μειονέκτημα ότι για αρκετά μεγάλες προτάσεις, έβγαζε σφάλματα, επειδή "έχανε" κάποια γράμματα στην όλη διαδικασία. Οπότε η συνάρτηση τού Ανδρέα είναι πολύ καλύτερη από αυτό που είχα.
Επειδή όμως θέλω να μαθαίνω, οφείλω να πω ότι ΔΕΝ ΞΕΡΩ πώς ή πού θα μπορούσα να γράψω τις δύο δικές σου συναρτήσεις, δεδομένου ότι δεν είμαι προγραμματιστής, και μόνο εμπειρικά και με τη βοήθεια φίλων έχω φτιάξει όσα έφτιαξα. Και οι δύο παραπάνω κώδικες, μοιάζουν περισσότερο με μακροεντολές παρά με συναρτήσεις κελιού. (π.χ. δεν βλέπω να έχει Sub). Πώς θα μπορούσα λοιπόν να τους χρησιμοποιήσω, δεδομένου ότι δεν ξέρω να προγραμματίζω πέραν συναρτήσεων κελιού και μακροεντολών;
Έχοντας όμως καταχραστεί τον πολύτιμο χρόνο σου, και γνωρίζοντας ότι ήδη έχω κάνει τη δουλειά μου, δεν είναι απαραίτητο να μου εξηγήσεις, παρά μόνο αν θεωρείς ότι θα είναι χρήσιμο και για άλλους αναγνώστες.
Ευχαριστώ πολύ!
-
19-11-19, 18:39 Απάντηση: Συναρτήσεις αντικατάστασης συμβόλων σε κείμενο #9
Kατάλαβα ότι έψαχνες μακροεντολή, για αυτό σου έστειλα την μακροεντολη. Αν θέλεις να το κάνεις απευθείας σε κελί τότε αυτό που πρότεινε ο AndreasN μάλλον είναι το καλύτερο δυνατό.
-
20-11-19, 19:30 Απάντηση: Συναρτήσεις αντικατάστασης συμβόλων σε κείμενο #10
Ναι, αυτή τη φορά συνάρτηση κελιού έψαχνα. Παρόμοια μακροεντολή είχα άλλο είδος και χρησιμοποιούσα. Αλλά με παραξένεψε που δεν είχε "Sub" για μακροεντολή.
Πάντως θα τη δοκιμάσω από περιέργεια.
-
20-11-19, 22:29 Απάντηση: Συναρτήσεις αντικατάστασης συμβόλων σε κείμενο #11
-
21-11-19, 18:40 Απάντηση: Συναρτήσεις αντικατάστασης συμβόλων σε κείμενο #12
Α, ωραία! Ευχαριστώ που μου έλυσες την απορία.
-
06-12-19, 13:44 Απάντηση: Συναρτήσεις αντικατάστασης συμβόλων σε κείμενο #13
αν μιλάμε για κείμενο μέσα σε καποιο κελί του excel, υπάρχει ένας πολύ πιο απλός τρόπος να έχεις το ίδιο κείμενο χωρίς τόνους, από το να γράψεις κώδικα.
αν λοιπόν στο κελί A1 υπάρχει η φράση "Τονισμένη φράση", τότε στο B1 γράφεις =PROPER(UPPER(A1)) και το αποτέλεσμα που παίρνεις, είναι το "Τονισμενη Φραση"
"
-
07-12-19, 21:26 Απάντηση: Συναρτήσεις αντικατάστασης συμβόλων σε κείμενο #14
Ευχαριστώ πολύ!
Θα το δοκιμάσω!
-
08-12-19, 10:28 Απάντηση: Συναρτήσεις αντικατάστασης συμβόλων σε κείμενο #15
Bookmarks