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/4726-aytomati-eksagogi-onomaton-apo-miniaio-plano.html)

citroenxsa 02-11-17 08:53

Αυτόματη εξαγωγή ονομάτων από μηνιαίο πλάνο
 
1 Συνημμένο(α)
Καλημέρα κύριοι και κυρίες και συγχαρητήρια για αυτή την εκπληκτική "εγκυκλοπαίδεια" του Office.
Θέλω με τη σειρά μου να σας ρωτήσω αν οι συναρτήσεις που έβαλα στον παρακάτω πίνακα είναι σωστές,(από άποψη λειτουργικότητας) και αν μπορώ να κάνω αυτό που θέλω με κάποια άλλη μικρότερη συνάρτηση-τύπο ή με VBA...με πιο σύντομο τρόπο με λίγα λόγια.

Spirosgr 02-11-17 10:22

Καλημέρα
Θοδωρή καλώς ήλθες στο ms-office.gr

Παρατηρώ το εξής, στην δική σου μεθοδολογία:
Αν βάλω αριστερά στο ημερολόγιο πχ ΑΥ σε ΑΠΟΣΤΟΛΙΔΗΣ & ΠΑΓΩΝΙΔΗΣ στις 6 του μήνα,
παίρνω αποτέλεσμα ΑΠΟΣΤΟΛΙΔΗΣΠΑΓΩΝΙΔΗΣ στο κελί δεξιά.

Είναι αυτό σωστό;
Μπορεί να έχει πχ 2 ή και περισσότερα ονόματα στην ίδια ημερομηνία στο ίδιο χωριό;
Και σε τι εξυπηρετεί η συνένωση ΑΠΟΣΤΟΛΙΔΗΣΠΑΓΩΝΙΔΗΣ σε μια λέξη.
Μπορεί να χρησιμοποιηθεί με αυτόν τον τρόπο;

Ακόμα θέλω να σε ρωτήσω αν στο υπόμνημα, θα υπάρχουν διπλότυπα.
Παράδειγμα
Έχουμε χωριό Βρυσούλα = ΒΡ και
χωριό Βράχος = ΒΡ επίσης;

citroenxsa 02-11-17 11:11

Καλημέρα Σπύρο..στο ίδιο χωριό θα υπάρχει πάντα ένα όνομα για κάθε ημερομηνία. Διπλότυπα όχι δεν θα υπάρχουν στα χωριά.
Έθεσα τον προβληματισμό προσπαθώντας να αποφύγω να γράφω σε κάθε κελί των χωριών συνέχεια τις συναρτήσεις.....

kapetang 02-11-17 16:29

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

Θοδωρή βαλε στο κελί AI3 τον τύπο:

Κώδικας:

=IFERROR(INDEX($A$3:$A$100;MATCH(LEFT(INDEX($AI$2:$AR$2;COLUMN()-COLUMN($AH$1));2);INDEX($B$3:$AF$100;;MATCH(DAY($AH3);$B$2:$AF$2;0));0));"")
και αντίγραψέ τον (σύροντας τη λαβή συμπλήρωσης) όσο χρειάζεται προς τα κάτω και δεξιά.

Για να λειτουργήσει σωστά ο τύπος:

1) Τα ονόματα στη στήλη A θα πρέπει να είναι διαφορετικά (μοναδικά).

2) Τα 2 αρχικά γράμματα που χαρακτηρίζουν κάθε χωριό, πρέπει επίσης να είναι διαφορετικά (μοναδικά).

Δες το συνημμένο.

Spirosgr 02-11-17 16:40

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

Στο υπόδειγμα που ακολουθεί, υποστηρίζονται:
100 ονόματα
15 χωριά
Μέχρι το 2030
Με λίστα επιλογής μήνα - έτους
Υπολογίζει τις ημερομηνίες αυτόματα
Υπολογίζει τα δίσεκτα έτη


Το φύλλο είναι κλειδωμένο, χωρίς κωδικό, για προστασία των τύπων

Επιλέγουμε στα χωριά δεξιά στην πρώτη γραμμή, να βάλουμε την συντόμευση μας
(έχει ενσωματωθεί το υπόμνημα)

Επιλέγουμε αριστερά ένα κελί και με βάση το όνομα και την ημερομηνία,
βάζουμε την συντόμευση.

Ο κώδικας, θα βάλει το όνομα στην θέση που πρέπει, δεξιά,
με γνώμονα το χωριό και την ημερομηνία.

Σημειώσεις
1
Αφού μελετήσεις το υπόδειγμα, θα πρέπει να συμπληρώσεις τις μορφοποιήσεις
πχ για χωριό10 = Βραχόκηπος = ΒΡ = κόκκινο χρώμα
2
Μελέτησε τα ονόματα στον Name manager
Αν αυξηθούν οι περιοχές, θα πρέπει να προσαρμοστούν.
3
Με βάση το...«δεν θα υπάρχουν διπλότυπα...», ο κώδικας δεν φροντίζει γι αυτό.
4
Δεν φροντίζει ακόμα να σε προστατέψει, αν σε έναν μήνα με 30 ημέρες,
πας να γράψεις στην στήλη 31
5
Αν διαγράψεις αριστερά μια συντόμευση, δεν θα διαγραφεί δεξιά το όνομα
(θα πρέπει να το κάνεις manual)

Περισσότερα στο βιβλίο...
Καλή συνέχεια.

citroenxsa 03-11-17 17:09

Ευχαριστώ πολύ για την βοήθεια...ήταν αυτο ακριβώς που ήθελα

kapetang 03-11-17 18:32

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

Το συνημμένο αποτελεί μια αναβάθμιση της πρότασής μου στο #4.

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

citroenxsa 04-11-17 08:54

Σπύρο κάπου θέλει διόρθωση...Οταν βάζω στην 31 του μήνα κάποιο χωριό σε οποιοδήποτε όνομα, δεν μου το βγάζει στην ημερομηνία του, αλλά στο όνομα του χωριού π.χ.αντί για το κελί AL33 το βγάζει στο AL2.πειραξα τον κώδικα αλλά δεν έκανα κατι

Spirosgr 04-11-17 15:54

Ο δαίμων του τυπογραφείου...

Άλλαξε το κάτω μέρος του κώδικα, ανάμεσα σε αυτό
Κώδικας:

If Target.Value = "" And iMcol = 0 Then Exit Sub
και αυτό
Κώδικας:

Sheet1.Protect
βάλε
Κώδικας:

    Dim i As Long, dx As Integer, icnt As Integer
    icnt = Application.WorksheetFunction.Count(Sheet1.Range("ah3:ah33"))

    For i = 3 To icnt + 2
        dx = DatePart("d", Sheet1.Cells(i, 34).Value)

        If dx = icol - 1 Then
            Sheet1.Cells(i, iMcol).Value = Sheet1.Cells(irow, 1).Value
        End If
    Next i



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

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


Search Engine Optimization by vBSEO 3.3.2