Forum

Forum (https://www.ms-office.gr/forum/)
-   Excel - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/)
-   -   [Συναρτήσεις] Συνάρτηση MODE (φίλτρο) (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/1858-synartisi-mode-filtro.html)

PANIK 14-05-12 14:51

Καλησπέρα σε όλους:
Λευτέρη υπάρχει τρόπος με τη συνάρτηση σου (η με άλλο τρόπο) να βρίσκουμε την (2) δεύτερη και την (3) τρίτη κατά σειρά συχνότερη τιμη (με την προυπόθεση πάντα ότι θα μεταβάλλεται και θα λειτουργεί μετά απο φιλτράρισμα)

gr8styl 14-05-12 18:16

1 Συνημμένο(α)
Αγαπητέ Παντελή,
σου είχα απαντήσει http://www.ms-office.gr/forum/10806-post4.html και είχες πει:
"Η λύση του Θανάση (gr8styl) είναι χρησιμότατη και κάνοντας αναγωγή θα με βοηθήσει και σε πολλά άλλα θέματα."
Όπως δείχνουν τα πράγματα όμως προτιμάς τα έτοιμα.

Δες λοιπόν στο συνημμένο μελέτησέ το και κάνε τις αναγκαίες αλλαγές αν χρειαστεί.

Θανάσης

Tasos 14-05-12 19:24

1 Συνημμένο(α)
Καλησπέρα σε όλους!
Δείτε μια προσέγγιση με συνάρτηση VBA.

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


Κώδικας:

Function IsVisible(xCell As Range) As Boolean
    IsVisible = Not xCell.EntireRow.Hidden
End Function

Η συνάρτηση αυτή χρησιμοποιείται στη στήλη Α έτσι: =IF(IsVisible(E11);E11;0)

Μπορούμε να αυξήσουμε το Top 5 των ηλικιών που υπάρχουν στο συνημμένο όσο χρειαστεί σέρνοντας τους τύπους προς τα κάτω.

Φιλικά

Τάσος

PANIK 14-05-12 20:46

Θανάση υπό μία έννοια έχεις δίκιο όμως:
Αναγωγή δεν έκανα γιατί μιλάμε ακριβώς για το ίδιο θέμα.
Δυστυχώς δεν έχω δικές μου λύσεις για να τις προτιμήσω και έτσι εκ των πραγμάτων επιλέγω τα έτοιμα. Και βέβαια ακόμα κι αν είχα κάποια λύση θα προτιμούσα και πάλι μιά καλύτερη (δηλαδή μιά έτοιμη).
Προσπαθώ κάθε φορά τις λύσεις που μου δίνετε από έτοιμες να τις κάνω δικές μου (δηλαδή να τις κατανοήσω) ,με δεδομένο όμως ότι το επίπεδο των γνώσεων μου είναι χαμηλό στις περισσότερες των περιπτώσεων δεν τα καταφέρνω στις πολύ λίγες περιπτώσεις που τα καταφέρνω είναι βέβαιο ότι τις κάνω δικές μου.

PANIK 14-05-12 20:51

Τάσο η λύση που έδωσες λειτουργεί όμως αν βγάλουμε από τη στήλη Ε την τιμή 12 μας δίνει σαν πρώτη τιμή το 0. Αυτό μόνο, σε οποιαδήποτε άλλη περίπτωση βλέπω ότι δουλεύει.

Tasos 14-05-12 23:56

Παντελή, στη στήλη Β πέρασε τον παρακάτω τύπο:

=IF(OR(A11="";A11=0;COUNTIF(A12:A$1012;A11)>0);""; COUNTIF(A$11:A11;A11)-ROW()/10000)

Επίσης στη στήλη D άλλαξε το ROW(A2) σε ROW(A1) (υπάρχει σε 2 σημεία στον τύπο).

Τροποποίησα και το συνημμένο.

Τάσος

PANIK 15-05-12 16:14

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

PANIK 15-05-12 20:57

Καλησπέρα σε όλους.
Τάσο όταν το φίλτρο μπαίνει με το χέρι όλα λειτουργούν άψογα.
Στην δική μου περίπτωση το φίλτρο ενργοποιείται με check box από άλλο φύλλο εργασίας και με τον εξής κώδικα:

Private Sub CheckBox75_Click()
If CheckBox75 = True Then
Sheets("Φύλλο4").Select
Selection.AutoFilter Field:=22, Criteria1:="1"
Sheets("Φύλλο5").Select
Exit Sub
Else
Sheets("Φύλλο4").Select
Selection.AutoFilter Field:=22
Sheets("Φύλλο5").Select
Exit Sub
End If
End Sub

Με το μόλις ενεργοποιείται το φίλτρο από το checkbox χαλάει η συνάρτηση και βγάζει σαν αποτέλεσμα
ΤΙΜΗ. Δε μπορώ να καταλάβω γιατί γίνεται αυτό;

Tasos 15-05-12 22:51

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

Αγαπητέ Παντελή,
η προγραμματιστική εφαρμογή του αυτόματου φίλτρου δεν προκαλεί υπολογισμό σε συναρτήσεις που έχουν οριστεί από το χρήστη (όπως η IsVisible) με αποτέλεσμα να εμφανίζεται το σφάλμα #Value ( #Τιμή ).

Αυτό που μπορούμε να κάνουμε είναι να προκαλέσουμε τον υπολογισμό τους.
Στο παράδειγμα που επισυνάπτω εξηγείται πως μπορεί να γίνει.

Πρόσεξε σε παρακαλώ τα σχόλια στον κώδικα VBA.

Φιλικά

Τάσος

PANIK 15-05-12 23:53

Τάσο χίλια ευχαριστώ θα το δοκιμάσω αύριο. Έχω να αλλάξω 130 check box.
Ο κώδικας σου για (το check box) ελπίζω να κάνει το πρόγραμμα πιο γρήγορο.
Επίσης θα ήθελα να ρωτήσω αν έκανα ένα πίνακα απο f2:g7 ακριβώς όπως είναι ο πίνακας d2:e7 (για να γίνεται σύγκριση) και το ζητούμενο ήταν δείξε μου τις πέντε συχνότερες τιμές για αυτούς που ξέρουν αγγλικά ( στήλη f11:f37) πως θα έπρεπε να γραφούν οι συναρτήσεις στα κελιά f3 και j3 ( αν βέβαια είναι εφικτό κάτι τέτοιο να γίνει ).
Και πάλι σε ευχαριστώ για το ενδιαφέρον σου.


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

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


Search Engine Optimization by vBSEO 3.3.2