Forum

Forum (https://www.ms-office.gr/forum/)
-   Excel - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/)
-   -   [Μορφοποίηση] Εισαγωγή αριθμού σε κελί (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/1223-eisagogi-arithmoi-se-keli.html)

φωτης 25-06-11 00:23

Εισαγωγή αριθμού σε κελί
 
Καλησπέρα στην παρέα!

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

π.χ. Έστω ο αριθμός 145,12 Να εφαρμόσω μορφοποίηση έτσι ώστε εισάγωντας "14512" στο κελί να καταχωρηθεί "145,12"
Στο κελί καταχωρούνται 6φιοι αριθμοί (+2 για τα δεκαδικά), οπότε θα ήθελα να αποφύγω ένα αποτέλεσμα της μορφής:
"000145,12"

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

gr8styl 25-06-11 02:12

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

Πες μας τι έκανες και ποιόν από τους 3 επέλεξες.

Θανάσης

φωτης 25-06-11 17:17

Φίλε Θανάση σε ευχαριστώ για την άμεση απάντηση!

Ο πρώτος τρόπος με εξυπηρετεί αλλά θα ήθελα να εμφανίζεται και το διαχωριστικό για τις χιλιάδες.
π.χ. εισαγωγή: "12345678" ---> μορφοποίηση: "123.456,78"

Σε ευχαριστώ για τον χρόνο σου!

φωτης 25-06-11 17:32

Παράθεση:

Αρχική Δημοσίευση από φωτης (Μήνυμα 7018)
Φίλε Θανάση σε ευχαριστώ για την άμεση απάντηση!

Ο πρώτος τρόπος με εξυπηρετεί αλλά θα ήθελα να εμφανίζεται και το διαχωριστικό για τις χιλιάδες.
π.χ. εισαγωγή: "12345678" ---> μορφοποίηση: "123.456,78"

Σε ευχαριστώ για τον χρόνο σου!

Δοκίμασα αυτήν την μορφοποίηση: #"."##0","00
Το πρόβλημα που έχει είναι ότι όταν γίνεται εισαγωγή ενός αριθμού με λιγότερα από 4 ψηφία (μετά την υποδιαστολή) π.χ. "985,16" εμφανίζει στο κελί ".985,16"

φωτης 25-06-11 17:38

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

φωτης 25-06-11 18:10

Παράθεση:

Αρχική Δημοσίευση από φωτης (Μήνυμα 7020)
Επειδή θέλω η μορφοποίηση να γίνεται στο κελί που γίνεται η εισαγωγή του αριθμού (και όχι σε άλλο κελί η εισαγωγή και σε άλλο κελί η μορφοποίηση), έχω την εντύπωση οτι μπορεί να γίνει μόνο με VBA.

Κάπως έτσι:

If Cell <1000 then Cellformat = "##0,00"
else Cellformat = "###.##0,00"

και θα πρέπει να εφαρμόζεται σε μια περιοχή κελιών π.χ. Α1:A29

gr8styl 25-06-11 19:08

Φίλε Φώτη,
θα συμφωνήσω ότι μόνο με VBA μπορείς να επιτύχεις το να είναι διαφορετικό το τι καταχωρεί ο χρήστης από το τι τελικά καταχωρήται στο κελί.

Εγώ θα το έκανα έτσι για την περιοχή A1:A29:
Κώδικας:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1:A29")) Is Nothing Then
    If (Target > 0 And Target.Value = Int(Target.Value)) Then
        Target.NumberFormat = "#,##0.00"
        Target.Value = Target.Value / 100
    End If
End If
End Sub

Κάνεις απλά επικόλληση στον κώδικα του φύλλου.

Θανάσης

kapetang 25-06-11 19:52

1 Συνημμένο(α)
Καλημέρα στην παρέα

Φώτη, αν κατάλαβα καλά θέλεις να καταχωρείς ακέραιους αριθμούς (πχ 12345678, 56, 1) αλλά να αποθηκεύεται το πηλίκο τους με το εκατό (πχ 123456,78 0,56 0,01).
Θέλεις επίσης στη μορφοποίηση να εμφανίζεται και το διαχωριστικό των χιλιάδων.
Στο αρχείο που επισυνάπτω (είναι το αρχείο με τις λύσεις που πρότεινε ο Θανάσης) έχω διαμορφώσει τη στήλη K ώστε να έχει αυτές τις ιδιότητες.

Φιλικά/Γιώργος

Tasos 25-06-11 21:27

Καλησπέρα σε όλους!

Μπορούμε ακόμα να ρυθμίσουμε προγραμματιστικά (με VBA) την Αυτόματη Εισαγωγή Υποδιαστολής και τις θέσεις της πριν από το τέλος του αριθμού όπως μας υπέδειξε ο Γιώργος.

Έτσι, στον κώδικα του βιβλίου έχουμε:

Κώδικας:

Option Explicit

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    With Application
    .FixedDecimalPlaces = GetSetting("xlApp", "Settings", "FixedDecimalPlaces", 2)
    .FixedDecimal = GetSetting("xlApp", "Settings", "FixedDecimal", False)
    End With
End Sub

Private Sub Workbook_Open()
    With Application
        SaveSetting "xlApp", "Settings", "FixedDecimalPlaces", .FixedDecimalPlaces
        SaveSetting "xlApp", "Settings", "FixedDecimal", .FixedDecimal
        If .FixedDecimalPlaces <> 2 Then .FixedDecimalPlaces = 2
    End With
End Sub

και στον κώδικα του φύλλου:

Κώδικας:

Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Application.FixedDecimal = Not Intersect(Target, Range("A1:A29")) Is Nothing
End Sub

Θανάση και Γιώργο οι λύσεις σας είναι όπως πάντα μοναδικές!:045:

Να είστε πάντα καλά!

Φιλικά

Τάσος

φωτης 26-06-11 00:20

Καλησπέρα!

Φίλε Γιώργο η λύση σου είναι τόσο απλή που κάνει την αμάθεια μου ακόμη πιο μεγάλη.:blush:

Όσο για τις λύσεις σε VBA από τον Θανάση και τον Τάσο.... :omg2:

Σας ευχαριστώ όλους για την άμεση λύση του προβλήματος και για τις υποδείξεις σας.

ΥΓ Δούλεψαν όλες ρολόϊ.:045:


Η ώρα είναι 13:01.

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


Search Engine Optimization by vBSEO 3.3.2