
05-11-18, 16:58
|
 | Συντονιστής Όνομα: Σπύρος Τσιλιγιάννης Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010, Ms-Office 2013, Ms-Office 2016, Ms-Office 365 Γλώσσα λογισμικού Office: Ελληνική, Αγγλική | | Εγγραφή: 22-11-2011 Περιοχή: Αθήνα
Μηνύματα: 2.321
| |
Μερικές σκέψεις, για τους δύο τύπους που δίνονται ως λύσεις.
Κατ' αρχάς και οι δύο τύποι λειτουργούν σωστά, αν οι «αριθμοί»
είναι κείμενο, είτε με μορφοποίηση text, είτε με απόστροφο μπροστά.
Με βάση το ζητούμενο, όλοι οι «αριθμοί» ξεκινούν από 6,
που σημαίνει, βάλαμε σε τυχαίο ΧΧΧΧ το 06 μπροστά και έγινε αριθμός 06Χ.ΧΧΧ
με μορφοποίηση αριθμό και να φαίνεται το διαχωριστικό χιλιάδες...
Όποιοι κι αν είναι αυτοί οι αριθμοί, έχουν ένα limit προς τα κάτω (6 = Χαρακτήρες 1)
και ένα limit προς τα επάνω απροσδιόριστο (Χαρακτήρες ν)
Θεωρώ δύσκολο (όχι όμως απίθανο) να υπάρχουν αριθμοί με τρείς ή δύο χαρακτήρες
αλλά απίθανο να υπάρχουν αριθμοί με 1 χαρακτήρα, δηλ. μόνο το πρόθεμα 06 = 6
Ο τύπος του Γιώργου είναι συντομότερος και έχει το πλεονέκτημα,
ότι δουλεύει και για τους αριθμούς με 3 ή 2 ή 1 χαρακτήρες
(που παρέβλεψα ή απέρριψα όπως είπα πιο πάνω)
αλλά έχει ένα μειονέκτημα.
Το 7 που περιέχει στην =Rept().
Αυτό λύνει όλες τις περιπτώσεις από 7 και κάτω,
αλλά αν υπάρχουν «αριθμοί» από 8 και άνω χαρακτήρες αποδίδει #VALUE! ή #ΤΙΜΗ! *Δανείζομαι τις παρακάτω γραμμές από τη βοήθεια της Microsoft
-------------------------------------------------------------------------------------------------------------------------------- «...Το σφάλμα #ΤΙΜΗ! είναι ο τρόπος με τον οποίο το Excel δηλώνει ότι υπάρχει κάποιο πρόβλημα με
τον τρόπο που πληκτρολογήσατε τον τύπο σας ή
με τα κελιά στα οποία κάνετε αναφορά.
Το σφάλμα είναι πολύ γενικό και μπορεί να είναι δύσκολο να βρείτε την ακριβή αιτία του...»
--------------------------------------------------------------------------------------------------------------------------------
Ας υποθέσουμε ότι για να «διορθώσουμε» το πρόβλημα
βάζουμε ένα 10, ώστε να είμαστε σίγουροι ότι θα καλύψουμε όλες τις περιπτώσεις
έστω κι αν δεν υπάρχουν τέτοιοι «αριθμοί» (limit 8; 9; 10;)
Αν το εφαρμόσουμε σε έναν «αριθμό» 61.234.567 έχουμε 06.123456700
Αν το εφαρμόσουμε σε έναν «αριθμό» 612.345.678 έχουμε 06.123456000
...
...
Αν το εφαρμόσουμε σε έναν «αριθμό» 6.254 έχουμε 06.254000000
Καμία από τις περιπτώσεις δεν αποδίδει το επιθυμητό...
Αντίθετα ο τύπος με τις ένθετες =If(), μπορεί να είναι μεγαλύτερος,
ίσως και πιο δύσκολος να «στηθεί» αλλά αποδίδει αντίστοιχα FALSE
που σημαίνει σαφώς, εκτός εμβέλειας.
Με αυτό το σκεπτικό, πρότεινα τον τύπο με τις ένθετες...
Ο χρήστης, έχει σαφή εικόνα του σφάλματος (εκτός εμβέλειας)
και μπορεί να κάνει όποια τροποποίηση θέλει αν θέλει...
Όσον αφορά την ταχύτητα υπολογισμού, για αυτό το θέμα δεν τίθεται ζήτημα...
|