Ανανέωση ιστοσελίδας
ms-office.gr > Forum > Microsoft Excel > Excel - Ερωτήσεις / Απαντήσεις > [Excel07] Απαλοιφή κενών χαρακτήρων σε κελιά

Excel - Ερωτήσεις / Απαντήσεις Ότι έχει σχέση με συναρτήσεις, μορφοποίηση, εκτυπώσεις γραφήματα κτλ.

Απάντηση στο θέμα

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 04-11-18, 09:44
Όνομα: Λευτέρης
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 15-01-2015
Περιοχή: Keratsini
Μηνύματα: 8
Προεπιλογή Απαλοιφή κενών χαρακτήρων σε κελιά

Καλημέρα σε όλα τα μέλη.

Είναι η πρώτη φορά που αναρτώ μία ερώτηση, παρόλο που έχω συμβουλευτεί κάποιες φορές το forum. Σας ευχαριστώ πολύ για αυτό.

Θα ήθελα λοιπόν να με συμβουλέψει κάποιος πως μπορώ να εξαλείψω τα κενά διαστήματα μέσα σε κελιά. Τα κελιά είναι της μορφής H 4425, 4425 F K, 4425 FK, D 4425 F H, 4425 U-UI, κ.ο.κ

Ευχαριστώ
Απάντηση με παράθεση
  #2  
Παλιά 04-11-18, 12:45
Το avatar του χρήστη Spirosgr
Συντονιστής
Όνομα: Σπύρος Τσιλιγιάννης
Έκδοση λογισμικού 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
Προεπιλογή

Λευτέρη, καλώς όρισες στο ms-office.gr

Στο βιβλίο, μια λύση με αντικατάσταση...

Σημείωση:
Μπορούμε αν θέλουμε, να καταγράψουμε τα βήματα, σε μια μακροεντολή.
Συνημμένα Αρχεία
Τύπος Αρχείου: xlsm Book1.xlsm (65,7 KB, 21 εμφανίσεις)
Απάντηση με παράθεση
  #3  
Παλιά 04-11-18, 14:34
Όνομα: Λευτέρης
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 15-01-2015
Περιοχή: Keratsini
Μηνύματα: 8
Προεπιλογή

Παράθεση:
Αρχική Δημοσίευση από Spirosgr Εμφάνιση μηνυμάτων
Λευτέρη, καλώς όρισες στο ms-office.gr

Στο βιβλίο, μια λύση με αντικατάσταση...

Σημείωση:
Μπορούμε αν θέλουμε, να καταγράψουμε τα βήματα, σε μια μακροεντολή.

:vict ory:
Ευχαριστώ πολύ.
Το έκανα και με παύλες, τελείες κλπ

Βοήθησε αν μπορείς και σε κάτι άλλο.
Έχω αριθμούς που χάλασαν. Δλδ από την μορφή 06.χχχχχχχχ έγιναν 6.147.201, 621.852, 61.524 κλπ, δλδ μετατράπηκαν σε χιλιάδες.

Πως μπορώ να βάλω σε όλους το προθεμα 06. και μετά να είναι ο αριθμός 6ψήφιος? Αντίστοιχα δλδ να πάρουν την μορφή 06.147201, 06.215820, 06.152400

Ευχαριστώ
Απάντηση με παράθεση
  #4  
Παλιά 04-11-18, 17:55
Το avatar του χρήστη Spirosgr
Συντονιστής
Όνομα: Σπύρος Τσιλιγιάννης
Έκδοση λογισμικού 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
Προεπιλογή

Βάλε:
Κώδικας:
=IF(LEN(A1)=7;"06."&RIGHT(A1;6);IF(LEN(A1)=6;"06."&RIGHT(A1;5)&"0";IF(LEN(A1)=5;"06."&RIGHT(A1;4)&"00")))
Μπορεί να χρειαστεί και επιπλέον ένθετη* (μπορείς να την βάλεις πολύ απλά) αν υπάρχουν αριθμοί 6.123 και πρέπει να γίνουν 06.123000
*IF(LEN(A1)=4;"06."&RIGHT(A1;3)&"000")
Συνημμένα Αρχεία
Τύπος Αρχείου: xlsm Re_Book1.xlsm (14,4 KB, 20 εμφανίσεις)
Απάντηση με παράθεση
  #5  
Παλιά 05-11-18, 11:48
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Καλησπέρα

Θα πρότεινα το συντομότερο τύπο: ="06." & RIGHT(A1;LEN(A1)-1)& REPT("0";7-LEN(A1))
Συνημμένα Αρχεία
Τύπος Αρχείου: xlsx NumToText.xlsx (11,4 KB, 11 εμφανίσεις)
Απάντηση με παράθεση
  #6  
Παλιά 05-11-18, 16:58
Το avatar του χρήστη Spirosgr
Συντονιστής
Όνομα: Σπύρος Τσιλιγιάννης
Έκδοση λογισμικού 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
που σημαίνει σαφώς, εκτός εμβέλειας.

Με αυτό το σκεπτικό, πρότεινα τον τύπο με τις ένθετες...

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

Όσον αφορά την ταχύτητα υπολογισμού, για αυτό το θέμα δεν τίθεται ζήτημα...
Απάντηση με παράθεση
  #7  
Παλιά 06-11-18, 18:37
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Καλησπέρα

Παρακάτω εκφράζω τις απόψεις μου για τους 2 τύπους που προτάθηκαν και τη σχετική κριτική που έγινε από το Σπύρο.

1) Σχετικά με το ζητούμενο

Κατά τον Σπύρο, «Κατ' αρχάς και οι δύο τύποι λειτουργούν σωστά, αν οι «αριθμοί» είναι κείμενο, είτε με μορφοποίηση text, είτε με απόστροφο μπροστά.

Με βάση το ζητούμενο, όλοι οι «αριθμοί» ξεκινούν από 6,που σημαίνει, βάλαμε σε τυχαίο ΧΧΧΧ το 06 μπροστά και έγινε αριθμός 06Χ.ΧΧΧ με μορφοποίηση αριθμό και να φαίνεται το διαχωριστικό χιλιάδες..

Όποιοι κι αν είναι αυτοί οι αριθμοί, έχουν ένα limit προς τα κάτω (6 = Χαρακτήρες 1) και ένα limit προς τα επάνω απροσδιόριστο (Χαρακτήρες ν).

Θεωρώ δύσκολο (όχι όμως απίθανο) να υπάρχουν αριθμοί με τρείς ή δύο χαρακτήρες αλλά απίθανο να υπάρχουν αριθμοί με 1 χαρακτήρα, δηλ. μόνο το πρόθεμα 06 = 6».

Για μένα έχουμε αριθμούς (όχι κείμενο) που αρχίζουν με το ψηφίο «6», έχουν μέγιστο αριθμό ψηφίων 7 και κατάλληλη μορφοποίηση για να εμφανίζεται το διαχωριστικό «.» των χιλιάδων.

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

Τους παραπάνω αριθμούς θέλουμε να τους μετατρέψουμε σε κείμενο (όχι αριθμό) βάζοντας στη θέση του αρχικού «6» το «06.», ακολούθως τα υπόλοιπα ψηφία του αριθμού και τέλος κατάλληλο πλήθος μηδενικών, έτσι ώστε μετά το «06.» να έχουμε πάντα 6 ψηφία.

Ο τύπος που έδωσα, αλλά και ο τύπος του Σπύρου καλύπτει ακριβώς το παραπάνω ζητούμενο.

2) Σχετικά με την αξιολόγηση των τύπων

Κατά τον Σπύρο «Ο τύπος του Γιώργου είναι συντομότερος και έχει το πλεονέκτημα, ότι δουλεύει και για τους αριθμούς με 3 ή 2 ή 1 χαρακτήρες (που παρέβλεψα ή απέρριψα όπως είπα πιο πάνω) αλλά έχει ένα μειονέκτημα.Το 7 που περιέχει στην =Rept().

Αυτό λύνει όλες τις περιπτώσεις από 7 και κάτω, αλλά αν υπάρχουν «αριθμοί» από 8 και άνω χαρακτήρες αποδίδει #VALUE! ή #ΤΙΜΗ!

Δανείζομαι τις παρακάτω γραμμές από τη βοήθεια της Microsoft
----------------------------------------------------------------------------------------------------------------------------

«...Το σφάλμα #ΤΙΜΗ! είναι ο τρόπος με τον οποίο το Excel δηλώνει ότι υπάρχει κάποιο πρόβλημα με τον τρόπο που πληκτρολογήσατε τον τύπο σας ή με τα κελιά στα οποία κάνετε αναφορά.

Το σφάλμα είναι πολύ γενικό και μπορεί να είναι δύσκολο να βρείτε την ακριβή αιτία του...»
------------------------------------------------------------------------------------------------------------------------------

Ο τύπος που έδωσα, αλλά και ο τύπος του Σπύρου, αφορούν την περίπτωση που το πλήθος των ψηφίων των αρχικών αριθμών δεν υπερβαίνει τα 7.

Αν εφαρμοστούν σε αριθμούς με περισσότερα ψηφία θα επιστρέψουν αντίστοιχα #VALUE! (ή #ΤΙΜΗ!) και False.

Τα αποτελέσματα και των 2 περιπτώσεων σημαίνουν ουσιαστικά ότι κάτι δεν υλοποιείται σωστά.

Νομίζω (ανεξάρτητα από τη γενική τοποθέτηση της Microsoft) ότι ευκολότερα σε ένα συντομότερο τύπο μπορούμε να διαπιστώσουμε τι δεν έγινε σωστά παρά σε ένα μακροσκελή με πολλά ένθετα If.

3) Σχετικά με την αντιμετώπιση αριθμών με περισσότερα από 7 ψηφία

Κατά το Σπύρο «Ας υποθέσουμε ότι για να «διορθώσουμε» το πρόβλημα βάζουμε ένα 10, ώστε να είμαστε σίγουροι ότι θα καλύψουμε όλες τις περιπτώσεις έστω κι αν δεν υπάρχουν τέτοιοι «αριθμοί» (limit 8; 9; 10;)

Αν το εφαρμόσουμε σε έναν «αριθμό» 61.234.567 έχουμε 06.123456700.

Αν το εφαρμόσουμε σε έναν «αριθμό» 612.345.678 έχουμε 06.123456000.

Αν το εφαρμόσουμε σε έναν «αριθμό» 6.254 έχουμε 06.254000000.

Καμία από τις περιπτώσεις δεν αποδίδει το επιθυμητό...

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

Με αυτό το σκεπτικό, πρότεινα τον τύπο με τις ένθετες...

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

Ο τύπος που πρότεινα, όπως ανέφερα, καλύπτει την περίπτωση αρχικών αριθμών με 7 και λιγότερα ψηφία.

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

Στη θέση του 7, αντί να επιλεγεί αυθαίρετα ένας αριθμός πχ το 10, θα μπορούσε να τοποθετηθεί η έκφραση MAX(LEN($A:$A)).

Έτσι ο τελικός τύπος θα γίνει: ="06." & RIGHT(A1;LEN(A1)-1)& REPT("0";MAX(LEN($A:$A))-LEN(A1)) (τύπος πίνακα).

Στο συνημμένο δίνονται σχετικά παραδείγματα.

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

Συμπερασματικά και παρά τους προβληματισμούς που διατύπωσε ο Σπύρος, εξακολουθώ να πιστεύω ότι θα πρέπει να προτιμηθεί η πρόταση που δε χρησιμοποιεί ένθετα If, ως απλούστερη και περισσότερο ευέλικτη.
Συνημμένα Αρχεία
Τύπος Αρχείου: xlsx NumToText2.xlsx (11,7 KB, 8 εμφανίσεις)
Απάντηση με παράθεση
  #8  
Παλιά 07-11-18, 18:34
Το avatar του χρήστη Spirosgr
Συντονιστής
Όνομα: Σπύρος Τσιλιγιάννης
Έκδοση λογισμικού 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
Προεπιλογή

Αυτά που διατύπωσα ως σκέψεις, δεν είναι σε καμία περίπτωση, προτροπή,
για να χρησιμοποιηθεί ο τύπος με τις ένθετες, αντί για τον τύπο του Γιώργου...

Είναι η αποτύπωση, του γιατί εγώ επέλεξα τις ένθετες, στο συγκεκριμένο ζητούμενο.
Ο λόγος (να επαναλάβω) είναι, η αποτύπωση σφάλματος #VALUE! vs FALSE,
που σε καμία περίπτωση δεν μπαίνουν στην ίδια ζυγαριά...

Είναι σαν να μου λέει κάποιος, ότι αν έχω στο a1=5 και στο b1=7 τότε
αν βάλω στο c1 =a1=b1, το False που θα πάρω ως αποτέλεσμα, είναι... σφάλμα.
Όχι σφάλμα δεν είναι αλλά είναι Logical Value...
Με ότι σημαίνει αυτό...

Όσο για τους αριθμούς και τα κείμενα...
Φυσικά και τα δεδομένα είναι αριθμοί...
Μόνο που, επειδή το τσέκαρα και με κείμενα,
είπα απλά ότι «δουλεύουν και με κείμενα» αν κανείς θέλει ή έχει τέτοια μορφή...
Απάντηση με παράθεση
  #9  
Παλιά 05-11-18, 16:54
Όνομα: Λευτέρης
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 15-01-2015
Περιοχή: Keratsini
Μηνύματα: 8
Προεπιλογή

Παράθεση:
Αρχική Δημοσίευση από Spirosgr Εμφάνιση μηνυμάτων
Βάλε:
Κώδικας:
=IF(LEN(A1)=7;"06."&RIGHT(A1;6);IF(LEN(A1)=6;"06."&RIGHT(A1;5)&"0";IF(LEN(A1)=5;"06."&RIGHT(A1;4)&"00")))
Μπορεί να χρειαστεί και επιπλέον ένθετη* (μπορείς να την βάλεις πολύ απλά) αν υπάρχουν αριθμοί 6.123 και πρέπει να γίνουν 06.123000
*IF(LEN(A1)=4;"06."&RIGHT(A1;3)&"000")



Ευχαριστώ πάρα πολύ. Σόρρυ που σας κούρασα.
Το έκανα με επιτυχία.
Απάντηση με παράθεση
  #10  
Παλιά 05-11-18, 16:56
Το avatar του χρήστη Spirosgr
Συντονιστής
Όνομα: Σπύρος Τσιλιγιάννης
Έκδοση λογισμικού 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
Προεπιλογή

Καλή συνέχεια Λευτέρη.
Απάντηση με παράθεση
Απάντηση στο θέμα

Εργαλεία Θεμάτων
Τρόποι εμφάνισης

Δικαιώματα - Επιλογές
Δε μπορείτε να δημοσιεύσετε νέα μηνύματα
Δε μπορείτε να δημοσιεύσετε απαντήσεις
Δεν μπορείτε να επισυνάψετε αρχεία
Δεν μπορείτε να επεξεργαστείτε τα μηνύματα σας

Ο κώδικας ΒΒ είναι σε λειτουργία
Τα Smilies είναι σε λειτουργία
Ο κώδικας [IMG] είναι σε λειτουργία
Ο κώδικας HTML είναι εκτός λειτουργίας
Trackbacks are εκτός λειτουργίας
Pingbacks are εκτός λειτουργίας
Refbacks are εκτός λειτουργίας


Παρόμοια Θέματα

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
[ Πίνακες ] Συμπλήρωση και απαλοιφή κενών thanasisdim Access - Ερωτήσεις / Απαντήσεις 5 11-01-18 09:38
[Γενικά] Απαλοιφή Συμβόλων paliouras Excel - Ερωτήσεις / Απαντήσεις 3 08-09-16 13:34
Απαλοιφή σφάλματος ερωτήματος ενημέρωσης γιώργοςΚ Access - Ερωτήσεις / Απαντήσεις 4 23-12-13 17:00
[Γενικά] Απαλοιφή κενών,απο την αριστερή πλευρά ενός κελιού misirlis Excel - Ερωτήσεις / Απαντήσεις 5 01-04-12 11:50
Απαλοιφή αριθμών από αλφαριθμητική συμβολοσειρά. Tasos Κείμενο 0 28-09-11 15:30


Η ώρα είναι 02:47.