Forum

Forum (https://www.ms-office.gr/forum/)
-   Excel - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/)
-   -   [Excel07] Αλφαβητική εξαγωγή ονομάτων (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/4874-alfabitiki-eksagogi-onomaton.html)

George R 12-04-18 13:22

Αλφαβητική εξαγωγή ονομάτων
 
Χρόνια πολλά σε όλους.

Θέλω να ρωτήσω το εξής:

Έστω ότι έχουμε μιά λίστα ονομάτων σε μία στήλη του Excel.

Μπορούμε με κάποιον τρόπο (δίχως κώδικα), να εξάγουμε αυτόματα, αυτά τα
ονόματα, αλφαβητικά σε μία άλλη στήλη;

Ευχαριστώ.

kapetang 13-04-18 08:33

Καλημέρα

Υποθέτω ότι τα ονόματα είναι στην περιοχή: A2:A10.

1) Στο κελί B2, πληκτρολογούμε τον τύπο πίνακα:

=INDEX($A$2:$A$10; MATCH(SMALL(COUNTIF($A$2:$A$10;"<"&$A$2:$A$10); ROW(A1)); COUNTIF($A$2:$A$10; "<"&$A$2:$A$10); 0))

και τον αντιγράφουμε, προς τα κάτω όσο χρειάζεται.

2) Αν τα ονόματα είναι μοναδικά, μπορούμε να χρησιμοποιήσουμε τον απλούστερο τύπο πίνακα:

=INDEX($A$2:$A$10;MATCH(ROW(A1);COUNTIF($A$2:$A$10 ;"<="&$A$2:$A$10);0))

Υπενθυμίζω ότι μετά την πληκτρολόγηση του τύπου, θα πρέπει να πατήσουμε Ctrl+Shift+Enter.

George R 16-04-18 06:51

Ευχαριστώ Γιώργο για την απάντησή σου

όμως οι τύποι φαίνεται να έχουν κάποιο λαθάκι. Βγάζουν μόνο το πρώτο όνομα σε όλον τον πίνακα.

Υ.Γ.

Ίσως θα μπορούσαμε να χρησιμοποιήσουμε τους κωδικούς ASCII των χαρακτήρων. Ποιά είναι η συνάρτηση που μας δίνει τον κωδικό ASCII κάποιου χαρακτήρα;

Ευχαριστώ.

kapetang 16-04-18 09:19

Καλημέρα

Είναι φανερό ότι δεν εισήγαγες σωστά τους τύπους.

Τόνισα ότι είναι τύποι πίνακα, συνεπώς:

1) Μετά την πληκτρολόγησή τους στο πρώτο κελί, πατούμε Cttl + Shift + Enter (αυτό θα τους περιβάλλει με αγκύλες).

2) Ακολούθως σύρουμε και τους αντιγράφουμε, όσο χρειάζεται προς τα κάτω.

George R 16-04-18 13:31

Όντως

τα είχα περάσε απλά, όχι σαν πίνακα

Ευχαριστώ.

George R 17-04-18 06:59

Να ρωτήσω και κάτι από την φορμουλα που έβγαλες, για να μαθαίνουμε κιόλας.

Ο ρόλος της:

COUNTIF($A$2:$A$10; "<"&$A$2:$A$10)

ποιος είναι ακριβώς μέσα στην συνολική φόρμουλα;

Συγκρίνει τα αλφαριθμητικά; Αν ναι, με ποιόν τρόπο; Μήπως με το πρώτο γράμμα του κάθε αλφαριθμητικού, όπου σε αυτό αντιστοιχεί κάποιος αριθμός;

Ευχαριστώ.

kapetang 17-04-18 09:23

Ο τύπος συγκρίνει κάθε όνομα (τρέχον) με όλα τα ονόματα και βρίσκει πόσα είναι μικρότερα ή ίσα με το τρέχον.

Για τη σύγκριση συνοπτικά ισχύουν τα εξής:

1) Από διεθνή πρότυπα, σε κάθε χαρακτήρα εκχωρείται ένας αριθμός (ταυτότητα).

2) Ένας χαρακτήρας είναι μικρότερος, ίσος ή μεγαλύτερος από κάποιον άλλο, αν η ταυτότητά του είναι μικρότερη, ίση ή μεγαλύτερη από την ταυτότητα του άλλου.

3) Για να συγκρίνουμε δύο συμβολοσειρές (ονόματα) εξετάζουμε διαδοχικά τον 1ο , 2ο, 3ο …. χαρακτήρα της μιας και τον αντίστοιχο της άλλης , μέχρι (σε κάποια θέση 1η, 2η, …) να συναντήσουμε διαφορετικούς χαρακτήρες.

Η σύγκριση αυτών των διαφορετικών χαρακτήρων, καθορίζει και το αποτέλεσμα της σύγκρισης των συμβολοσειρών.

Για παράδειγμα η συμβολοσειρά ααββδ είναι μεγαλύτερη από την ααββγδε, επειδή στη θέση 5 το δ είναι μεγαλύτερο από το γ.

George R 17-04-18 09:31

Αυτή η ταυτότητα, μήπως είναι ο παλιός αριθμός ASCII που λέγαμε παλιά;

Υπάρχει συνάρτηση που μας δίνει αυτήν την ταυτότητα του κάθε χαρακτήρα;

Ευχαριστώ Γιώργο για το χρόνο σου.

kapetang 17-04-18 09:50

Ο αριθμός ASCI είναι μια ταυτότητα.

Επειδή έχει περιορισμούς (ταυτότητα<=255), καθιερώθηκαν και άλλα πρότυπα, όπως το UNICODE.

Στο Excel για την εύρεση της ταυτότητας χρησιμοποιείται η συνάρτηση CODE.

Ενώ για να βρούμε το χαρακτήρα από την ταυτότητα η CHAR

George R 17-04-18 10:02

Ευχαριστώ πολύ Γιώργο.

Sorry που σε ζαλίζω, αλλά θέλω να σε ρωτήσω και κάτι άλλο (επειδή το ζήτημα είναι αρκετά ενδιαφέρον).

Είπες στο προηγούμενο σχόλιο ότι γίνεται σύγκριση του κάθε χαρακτήρα μέσα στιςσυμβολοσειρές. Από περιέργεια, σε ποιό κομμάτι της φόρμουλας γίνεται αυτό; Έκανα κάποιες δοκιμές με την COUNTIF($A$2:$A$10; "<"&$A$2:$A$10) και φαίνεται εκεί ότι (μπορεί να κάνω λάθος) εξετάζει ολόκληρη τη λέξη και όχι χαρακτήρες.
Δηλαδή για παράδειγμα, αν από το Α2 έως το Α9 έχω το ίδιο επίθετο, π.χ. Παπαδόπουλος και διαφοροποιούνται μόνο τα ονόματα, πως ξέρει η συνολική συνάρτηση που έβγαλες, ότι η διαφοροποίηση αρχίζει από τον 14ο χαρακτήρα; (δηλαδή μετά το Παπαδόπουλος).

Ευχαριστώ πολύ.

kapetang 17-04-18 11:28

Μάλλον δεν κατάλαβες αυτά που γράφω.

Στο μήνυμά μου ξεκαθαρίζω πότε μια συμβολοσειρά θεωρείται μικρότερη, ίση ή μεγαλύτερη από κάποια άλλη.

Τόνισα ότι συγκρίνονται, αρχίζοντας από την 1η θέση, οι χαρακτήρες στην ίδια θέση (1, 2, 3, ..) στις 2 συμβολοσειρές, μέχρι να εντοπιστούν διαφορετικοί.

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

Ξεκαθαρίζω ότι στην απόφαση εκείνο που μετράει είναι το αποτέλεσμα της σύγκρισης των 2 διαφορετικών χαρακτήρων και όχι η θέσης τους.

3) Στον τύπο η σύγκριση των συμβολοσειρών γίνεται (με βάση την αρχή σύγκρισης που ανέφερα) με τον τελεστή <= και απλά η συνάρτηση COUNTIF απαριθμεί τα αληθή αποτελέσματα της σύγκρισης.

George R 17-04-18 11:56

Τα κατάλαβα πολύ καλά Γιώργο, απλά μάλλον εσύ δεν κατάλαβες τι ρωτάω, το οποίο είναι πολύ σαφές: Γράφεις στο 3:

3) Για να συγκρίνουμε δύο συμβολοσειρές (ονόματα) εξετάζουμε διαδοχικά τον 1ο , 2ο, 3ο …. χαρακτήρα της μιας και τον αντίστοιχο της άλλης , μέχρι (σε κάποια θέση 1η, 2η, …) να συναντήσουμε διαφορετικούς χαρακτήρες.

και η ερώτηση είναι απλή και την ξαναθέτω:

Αυτήν ακριβώς την διαδικασία που αναφέρεις, την κάνει η countif αυτόματα;, την κάνει κάποια άλλη συνάρτηση μέσα στην συνολική φόρμουλα; και γενικά από που προκύπτει η "σάρωση" των χαρακτήρων μέσα στην εκάστοτε γραμματοσειρά από τον 1ο έως τον 15ο π.χ. χαρακτήρα και όταν για παράδειγμα βρει την 1η διαφορά στον 7 χαρακτήρα, αποφασίζει ανάλογα.

kapetang 17-04-18 12:50

Αφού κατάλαβες πώς γίνεται η σύγκριση, γιατί ρωτούσες:

«πως ξέρει η συνολική συνάρτηση που έβγαλες, ότι η διαφοροποίηση αρχίζει από τον 14ο χαρακτήρα; (δηλαδή μετά το Παπαδόπουλος)».

Τέλος πάντων, για να τελειώνουμε, επαναλαμβάνω ότι η σύγκριση γίνεται (ακολουθώντας την αρχή που ανέφερα) αυτόματα από τον τελεστή «<=», που περιέχεται στην COUNTIF.

George R 17-04-18 13:16

Το τι ρώτησα διατυπώθηκε μα σαφήνεια και ήταν διαφορετικό απο αυτό που έγραψες για τη σύγκριση.

Ήταν αυτό που έγραψες στο τέλος για τον "αυτόματο" έλεγχο από την COUNTIF, το οποίο θα μπορούσε να γραφεί από την αρχή.

Σταματάω εδώ.

kapetang 17-04-18 15:35

Στο #11 μήνυμά μου, γράφω:

«Στον τύπο η σύγκριση των συμβολοσειρών γίνεται (με βάση την αρχή σύγκρισης που ανέφερα) με τον τελεστή <= και απλά η συνάρτηση COUNTIF απαριθμεί τα αληθή αποτελέσματα της σύγκρισης».

Για μένα και πιστεύω και για κάποιον με βασικές γνώσεις στο Excel, είναι αυτονόητο, αφού στη σύγκριση δε συμμετέχει κάτι άλλο, πέραν του τελεστή <=, ότι κατά κάποιο τρόπο είναι «αυτόματη» γι’ αυτό και δεν πρόσθεσα τη λέξη.

Την πρόσθεσα στο #13 μήνυμά μου, όταν είδα ότι επιμένεις να την αναφέρεις στο #12 μήνυμά σου.

George R 17-04-18 22:55

Για μένα και για κάποιους με βασικές γνώσεις της ζωής είναι αυτονόητο ότι:

ΤΟ ΓΙΝΑΤΙ ΒΓΑΖΕΙ ΜΑΤΙ.

kapetang 18-04-18 07:30

Όντως .


Η ώρα είναι 22:08.

Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.


Search Engine Optimization by vBSEO 3.3.2