![]() |
Εύρεση και διατύπωση ημέρας συγκεκριμμένης ημερομηνίας. Καλησπέρα σας. Στο Α1, βάζουμε μια ημερομηνία. Π.χ 22/01/2013. Ζητούμενο είναι_χρησιμοποιώντας τύπους_στο D1, να μας ενημερώνει "λέγοντας" "Είναι η 4τη Τρίτη του μήνα Γενάρη" Αν η ημερομηνία είναι 29/01/2013, τότε το αποτέλεσμα θα πρέπει να είναι" "Είναι η τελευταία Τρίτη του μήνα Γενάρη" Αν η ημερομηνίες είναι Σάββατο(π.χ 19/01/13 και 26/01/2013, θα πρέπει αντίστοιχα οι απαντήσεις να είναι" "Είναι το 3το Σάββατο του μήνα Γενάρη" "Είναι το τελευταίο Σάββατο του μήνα Γενάρη" |
1 Συνημμένο(α) Καλημέρα Φώτη! Έστω ότι η ημερομηνία βρίσκεται στο κελί Β2. Ο βασικός τύπος που θα σου επιστρέψει το αριθμό 1,2,3,4 ή 5 είναι: =SUMPRODUCT((WEEKDAY(ROW(INDIRECT("A"&B2-DAY(B2)+1&":"&"A"&B2));2)=WEEKDAY(B2;2))*1) Ο τελικός τύπος που επιστρέφει βρίσκεται στο συνημένο και παίρνει λέξεις από λίστες που έχω δημιουργήσει. Οι λίστες αυτές μπορεί κατά βούληση να μετατραπούν ή να καταργηθούν (αφού προηγουμένως τροποποιηθεί ο τελικός τύπος). Διατηρώντας τις λίστες το αποτέλεσμα θα είναι πιο αξιόπιστο ως προς τα ονόματα ημερών και μηνών. Καλή συνέχεια! Τάσος Edit: Το συνημμένο αντικαταστάθηκε με νέο βελτιωμένο (Περαιτέρω επεξεργασία τύπου) |
1 Συνημμένο(α) Καλησπέρα στην παρέα Μια άλλη προσέγγιση. Σ’ αυτήν για να προσδιορίσουμε τη σειρά εμφάνισης μιας μέρας μέσα στο μήνα, χρησιμοποιούμε τον τύπο: INT((DAY(A1)-1)/7)+1, στον οποίο το κελί A1 περιέχει την ημερομηνία. Για να βρούμε αν μια μέρα είναι η τελευταία στο μήνα, χρησιμοποιούμε τον τύπο: MONTH(A1)<>MONTH(A1+7). Το αρχείο που επισυνάπτω δείχνει μια εφαρμογή των παραπάνω σχέσεων. Φιλικά/Γιώργος |
1 Συνημμένο(α) Καλησπέρα. Στην λογική του Γιώργου ο βασικός τύπος. Αν και βλέπω ότι αυτό που έδωσε ο Γιώργος είναι καλύτερο(Πιό προσιτό), μιας και το είχα δουλέψει, σας δίνω και την δική μου προσέγγιση. |
Καλησπέρα. Πρόκειται για χιλιάδες γραμμές δεδομένων. Τάσο δουλεύει σωστά αλλά η SUMPRODUCT και η INDIRECT, θα μου σκοτώσει τον υπολογιστή. Λευτέρη πολύ καλή δουλειά. Γιώργο, άψογη προσέγγιση. Σας ευχαριστώ πολύ. |
1 Συνημμένο(α) Καλησπέρα σας. Εγώ θα έλεγα ότι η προσέγγιση του Τάσου με χρήση πινάκων είναι η σωστή γιατί ή TEXT εξαρτάται από τις τοπικές ρυθμίσεις των WINDOWS και την γλωσσική έκδοση του EXCEL. Επίσης οι υπολογισμοί του Γιώργου για 1η ... τελευταία επίσης είναι πολύ σωστοί. Άρα ένας συνδυασμός των δύο θα έλεγα είναι το ιδανικό. βλ. συνημμένο Οι SUMPRODUCT και INDIRECT δεν είναι αναγκαίες και μπορούν να αποφευχθούν. Θανάσης |
1 Συνημμένο(α) Καλησπέρα σε όλους! Έχετε δίκιο Θανάση και Φώτη. Και εγώ ήμουν και είμαι της γνώμης (και το έχω αναφέρει αρκετές φορές στο φόρουμ) ότι η Indirect() δεν είναι ότι καλύτερο ειδικά σε πολλά δεδομένα. Την πρότεινα (λάθος μου) επειδή αυτή μου ήρθε πρώτη στο μυαλό και επειδή υπέθεσα ότι επρόκειτο για 50-100 γραμμές. Αν όμως πρόκειται για πολλές χιλιάδες δεδομένα, ίσως πρέπει να αποφύγει κανείς τους τύπους για να ελαττώσει τους υπολογισμούς της εφαρμογής και να αυξήσει την απόδοση της, Ενδεικτικά, αν αντί για τύπους καταχωρηθούν σταθερές με VBA, o χρόνος που θα χρειαστεί για 500.000 κελιά σε ένα μέσο υπολογιστή είναι κάτω από 5 δευτερόλεπτα με αποτέλεσμα να μειωθούν δραματικά οι χρόνοι ανοίγματος, υπολογισμού και αποθήκευσης του αρχείου. Επισυνάπτω ένα παράδειγμα για δοκιμές που θα φανεί χρήσιμο περισσότερο σε αυτούς που εργάζονται σε υπολογιστές με μη ελληνική τοπική ρύθμιση συστήματος. Στο παράδειγμα αυτό: Τα ονόματα των μηνών της Ελληνικής εμφανίζονται στην γενική πτώση (με χρήση Πίνακα (Array) και της συνάρτησης ChrW() στη VB) Οι ημέρες εμφανίζονται στα ελληνικά με χρήση του παρακάτω Βρόχου επανάληψης: Κώδικας: For i = 1 To 7τα ελληνικά μέσα στον VBE (απαραίτητο σε μη ελληνικούς υπολογιστές). Συμπληρώστε ας πούμε 500.000 δεδομένα και κάντε τις δοκιμές σας. Καλό ξημέρωμα! Τάσος |
| Η ώρα είναι 08:01. |
Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.