ms-office.gr > Forum > Microsoft Excel > Excel - Ερωτήσεις / Απαντήσεις > [Γενικά] μετατροπή σε ωρα

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

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

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 22-08-10, 11:35
Όνομα: Μάκης
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 03-06-2010
Περιοχή: Σπάτα
Μηνύματα: 75
Προεπιλογή μετατροπή σε ωρα

Καλησπέρα στην παρέα!

Το πρόβλημα μου είναι το εξης..

Θέλω να βαζω σε ενα κελη π.χ 1245 και να μου μετατρεπει σε ώρα 12:45
ευχαριστώ .
Απάντηση με παράθεση
  #2  
Παλιά 22-08-10, 14:42
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007
Γλώσσα λογισμικού Office: Αγγλική
 
Εγγραφή: 14-08-2010
Μηνύματα: 10
Προεπιλογή

Καλησπέρα στο Forum!


Φίλε Νίκο, αυτό που θέλεις δε μπορεί να γίνει γιατί ο αριθμός 1245 σαν αριθμός δε σχετίζεται με την ώρα 12:45.

Κάνε το εξής παράδειγμα: γράψε σε ένα κελί 12:45 (όπως το βλέπεις) και μετά κάνε δεξί κλικ, μορφοποίηση κελιών και πήγαινε στη κατηγορία αριθμός. Θα σου βγάλει 0,53 σαν αποτέλεσμα. Το ίδιο γίνεται και με άλλους αριθμούς αλλά είναι αδύνατο να τα συνδυάσεις.

Το καλύτερο που έχεις να κάνεις είναι να βάζεις απ'ευθείας την ώρα εκτός και αν κάποιος άλλος φίλος έχει να προτείνει κάτι άλλο πιο κοντά σε αυτό που θες.

Λυπάμαι που δε βοήθησα αλλά ουσιαστικά απέκλεισα!!

Φιλικά
Γιώργος
Απάντηση με παράθεση
  #3  
Παλιά 22-08-10, 15:49
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.737
Προεπιλογή

Καλησπέρα

Αν ο αριθμός είναι στο κελί F4 και έχει τρία ή τέσσερα ψηφία, από τα οποία τα δύο τελευταία είναι τα λεπτά και τα υπόλοιπα (δύο ή ένα) οι ώρες, πιθανόν να εξυπηρετούσε ο τύπος: =LEFT(F4;LEN(F4)-2) & ":" & RIGHT(F4;2). Υπάρχει και ο τύπος:=TIME(LEFT(F2;LEN(F2)-2);RIGHT(F2;2);0), που θεωρώ καλύτερο.

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

Τελευταία επεξεργασία από το χρήστη kapetang : 22-08-10 στις 16:16.
Απάντηση με παράθεση
  #4  
Παλιά 22-08-10, 15:57
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.249
Προεπιλογή

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

Νίκο, ο Γιώργος έχει δίκιο. Δεν γίνεται με κάποια μορφοποίηση κελιού να μετατρέψουμε το
1245 σε 12:45 και να μπορεί ταυτόχρονα να υπολογιστεί για να βγεί κάποιο άθροισμα κτλ.

Με τη βοήθεια της VBA και με μια μικρή προετοιμασία στο φύλλο θα μπορέσουμε να εμφανίζουμε την ώρα σε μορφή "ωω:λλ" σε μορφή κειμένου η οποία μπορεί να υπολογιστεί από την Excel σαν αριθμός ή ώρα!

1) Μορφοποίησε τις στήλες που θα πληκτρολογείται η ώρα ως κείμενο (Επιλογή στήλης και συνδυασμος πλήκτρων CTRL+1).

μετατροπή σε ωρα-xl_format_dlg.jpg

2) στην πρώτη γραμμή των στηλών που θα πληκτρολογείται η ώρα (πχ. στο κελί C1, D1, F1 κοκ.) να πληκτρολογήσεις την τιμή -1.
Έτσι, με βάση αυτή την τιμή, ο κώδικας παρακάτω θα μπορεί να ελέγξει αν προκειται για στήλη που πρέπει να γίνουν οι απαραίτητες αλλαγές.

3) Kανε δεξί κλικ στην καρτέλα του φύλλου και επίλεξε: "Προβολή κώδικα".
Στο παράθυρο που θα εμφανιστεί, επικόλλησε τον παρακάτω κώδικα:

Κώδικας:
Option Explicit
   
  Private Sub Worksheet_Change(ByVal Target As Range)        ' Target = το κελί που προκαλεί το συμβάν αυτό
      On Error Resume Next
      If Cells(1, Target.Column) <> -1 Then Exit Sub
      If Target.Row > 50 Or Target.Row < 2 Then Exit Sub ' αν η γραμμή του "Target" είναι
            'μεγαλύτερη του 50 ή μικρότερη του  2  τοτε δεν θα συνεχίσει η εκτέλεση του κώδικα.
            'Προσάρμοσε τα νούμερα αυτά στα μέτρα σου.

      If Target.Value = "" Then Exit Sub
      Application.EnableEvents = False
      Select Case Len(Target.Text)
          Case Is > 4
              Target.ClearContents
              Target.Select
              GoTo TheEnd
          Case Is = 4
              If Left(Target, 2) > 24 Or Right(Target, 2) > 59 Then
                  Target.ClearContents
                  Target.Select
                  GoTo TheEnd
              End If
              Target.Value = Left(Target, 2) & ":" & Right(Target, 2)
   
          Case Is = 3
              If Right(Target, 2) > 59 Then
                  Target.ClearContents
                  Target.Select
                  GoTo TheEnd
              End If
              Target.Value = "0" & Left(Target, 1) & ":" & Right(Target, 2)
          Case Is = 2
              If Target.Value > 23 Then
                  Target.ClearContents
                  Target.Select
                  GoTo TheEnd
              End If
              Target.Value = Format(Target, "00") & ":" & "00"
   
          Case Is = 1
              Target.Value = Format(Target.Text, "00") & ":" & "00"
      End Select
      If Target.Value = 0 Then Target.Value = "00:00"
   
  TheEnd:
      Application.EnableEvents = True
  End Sub
Δοκίμασε τον τρόπο λειτουργίας με διαφορες τιμές.

Αν κάπου υπαρχει κάποια απορία... εδώ είμαστε.

Καλη συνέχεια!

Φιλικά

Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών
Απάντηση με παράθεση
  #5  
Παλιά 23-08-10, 09:15
Όνομα: Μάκης
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 03-06-2010
Περιοχή: Σπάτα
Μηνύματα: 75
Προεπιλογή

Καλημέρα στο forum!

Τάσο και Γιώργο,οι προτάσεις σας δούλεψαν άψογα και σας ευχαριστώ πολύ.
Απάντηση με παράθεση
  #6  
Παλιά 24-08-10, 00:07
Το avatar του χρήστη nisgia
Super Moderator
Όνομα: Γιάννης
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 12-10-2009
Περιοχή: Ηγουμενίτσα
Μηνύματα: 186
Προεπιλογή

Πολύ καλησπέρα στην αγαπητή παρέα!!!
Να ρίξω και εγώ μια πρόταση;

Θέτουμε λοιπόν την προσαρμοσμένη μορφοποίηση "0\:00" (χωρίς τα εισαγωγικά)
στη στήλη με τους αριθμούς, και αν θέλουμε να συμμετέχουν σε υπολογισμούς,
η μετατροπή τους σε τιμές ώρας μπορεί να γίνει με τον τύπο:
=TIME(INT(A1/100);MOD(A1;100);)

Έτσι λοιπόν, αν στο κελί Α1 εισάγουμε το "1245", θα εμφανιστεί το "12:45"
ενώ η επιστρεφόμενη τιμή του παραπάνω τύπου θα είναι το "0,53" (όλα χωρίς εισαγωγικά).

Ελπίζω να σας αρέσει.
Γιάννης
__________________
Αν δεν το ρωτούσες, δεν θα το μαθαίναμε ποτέ...!
-----------------------------------------------
Τελικά η γνώση, αντίθετα με ό,τι μέχρι σήμερα πίστευα, είναι η φυλακή της σκέψης.
Όταν η αφετηρία είναι η ελεύθερη σκέψη, δεν χρειάζεται πλέον να φτάσεις πουθενά!
Απάντηση με παράθεση
  #7  
Παλιά 24-08-10, 08:48
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.737
Προεπιλογή

Καλημέρα στην παρέα
Γιάννη τη βρίσκω καταπληκτική!!!
Φιλικά/Γιώργος
Απάντηση με παράθεση
  #8  
Παλιά 24-08-10, 16:26
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.249
Προεπιλογή

Καλησπέρα!

Σε περίπτωση χρήσης τύπου θα πρότεινα τον εξής τύπο:

Στο A1 έχουμε: 1245

Ο τύπος είναι: =--TEXT(A1;"00\:00") και μας επιστρέφει 0,53125

Φιλικά

Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών
Απάντηση με παράθεση
  #9  
Παλιά 24-08-10, 18:34
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.737
Προεπιλογή

Καλησπέρα στην παρέα

Τάσο συγχαρητήρια και σε σένα!!!
Αποδείχθηκε και πάλι ότι μια απλή ερώτηση μπορεί να γίνει αφορμή για μια αρκετά διδακτική συζήτηση.
1. Είδαμε ότι αλλάζοντας την τιμή ενός κελιού πυροδοτείται το συμβάν Worksheet_Change, οπότε έχουμε τη δυνατότητα (γράφοντας τον κατάλληλο κώδικα) να την επικυρώσουμε, να την αλλάξουμε, κλπ.
2. Είδαμε και την ισχύ της μορφοποίησης.
Θα πρότεινα στο φόρουμ, αν δεν το έκανε, να παρουσιάσει το θέμα της μορφοποίησης λεπτομερέστερα.

Φιλικά/Γιώργος
Απάντηση με παράθεση
  #10  
Παλιά 07-09-10, 10:15
Το avatar του χρήστη nisgia
Super Moderator
Όνομα: Γιάννης
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 12-10-2009
Περιοχή: Ηγουμενίτσα
Μηνύματα: 186
Προεπιλογή

Παράθεση:
Αρχική Δημοσίευση από Tasos Εμφάνιση μηνυμάτων
Καλησπέρα!

Σε περίπτωση χρήσης τύπου θα πρότεινα τον εξής τύπο:

Στο A1 έχουμε: 1245

Ο τύπος είναι: =--TEXT(A1;"00\:00") και μας επιστρέφει 0,53125

Φιλικά

Τάσος
ΚΑΤΑΠΛΗΚΤΙΚΟΣ Ο ΤΑΣΟΣ!!!

Νομίζω Τάσο, πως σε αυτή την περίπτωση, με τον παραπάνω τύπο ανακάλυψες το ...άτομο!

@kapetang
Γιώργο, σ' ευχαριστώ για τα εύσημα!

Η μορφοποίηση ενός αριθμού, είναι απλά η περιγραφή της αλήθειας.
Η πραγματική αλήθεια είναι ο ίδιος ο αριθμός.

Φιλικά,
Γιάννης
__________________
Αν δεν το ρωτούσες, δεν θα το μαθαίναμε ποτέ...!
-----------------------------------------------
Τελικά η γνώση, αντίθετα με ό,τι μέχρι σήμερα πίστευα, είναι η φυλακή της σκέψης.
Όταν η αφετηρία είναι η ελεύθερη σκέψη, δεν χρειάζεται πλέον να φτάσεις πουθενά!
Απάντηση με παράθεση
Απάντηση στο θέμα

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

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

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


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

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
[ Ασφάλεια] Μετατροπη βασης σε mde artchrist73 Access - Ερωτήσεις / Απαντήσεις 3 15-11-15 15:01
Μετατροπή htm σε xlsx dimgks Access - Ερωτήσεις / Απαντήσεις 0 04-07-14 09:38
Μετατροπή από MDE σε ACCDE γιώργοςΚ Access - Ερωτήσεις / Απαντήσεις 3 25-02-14 07:25
[ Εκθέσεις ] Μετατροπή έκθεσης σε PDF gmax Access - Ερωτήσεις / Απαντήσεις 14 16-08-11 09:34
[Γενικά] Μετατροπή ώρας manolis Excel - Ερωτήσεις / Απαντήσεις 2 25-03-11 08:13


Η ώρα είναι 06:09.