![]() |
Φίλτρο με TRUE,FALSE 1 Συνημμένο(α) Και κατι ακομα που ξεχασα να ρωτησω πριν. Ευχαριστω. |
1 Συνημμένο(α) Καλησπέρα Κοίταξε το συνημμένο στην 1η γραμμή γίνεται με α.α ο εντοπισμός των true με βάσει αυτή γίνεται το φίλτρο, για οτιδήποτε μπορείς να ρωτήσεις Θανάσης |
Κυριε Θαναση καλησπερα.Σας ευχαριστω για τον χρονο που διαθεσατε για το προβλημα μου. Το φιλτρο δουλευει κανονικα ομως με δικη μου παραλειψη και συγχωρεστε με για αυτο πρεπει να διευκρινησω κατι που ειναι ουσιαστικο για να εχω λυση στο συγκεκριμενο προβλημα. Ολες οι στηλες μου και αυτες ειναι μερικες δεκαδες ισως και περισσοτερες ξεκινουν με TRUE η FALSE απο το C4. Οταν λοιπον θα εφαρμοζετε το φιλτρο τα δεδομενα που προκυπτουν δεν θα ηθελα να αλλαζουν γραμμη να ξεκινουν δηλαδη και αυτα απο το C4 και αυτο γιατι στη συνεχεια με βαση ενα τυπο που χρησιμοποιω τα φιλτραρισμενα δεδομενα θα αλλαξουν ξανα μερικα σε TRUE & FALSE και θα εφαρμοσω στα καινουργια το φιλτρο κοκ. Ευχαριστω θερμα για την απαντηση σας και προσδοκω ειτε εσεις ειτε και καποιος αλλος Κος,Κα να με βοηθησει. Καλη συνεχεια. |
1 Συνημμένο(α) Γρηγόρη, αν και δεν είμαι σίγουρος για το ζητούμενο σου, δες αν σε καλύπτει το συνημμένο. Άλλος Θανάσης (gr8styl) :lol: ΥΓ ο τύπος στο C14 είναι τύπος πίνακα (array formula κλείνει με Ctrl+Shift+Enter) |
Γρηγόρη αυτό είναι το περιεχόμενο του μηνύματος στο φύλλο που ανέβασες και το παραθέτω πιστή αντιγραφή. <<Στη γραμμη 4 εχω στηλες με TRUE & FALSE. Πως μπορω να φιλτραρω μονο τα TRUE και να μου τα βαζει απο το C14 και μετα με τη σειρα. *Η γραμμη 4 δεν εχει συγκεκριμενο αριθμο στηλων,αυτο αλλαζει καθε φορα.>> εδώ μας λες τώρα ότι δεν θέλεις να αλλάζουν γραμμή και να ξεκινούν από C4 πάλι Ερώτηση: Τι ισχύει τελικά για το που θα εμφανίζονται οι φιλτραρισμένες πλέον στήλες;;;; |
1 Συνημμένο(α) Το παράδειγμα που ακολουθεί είναι μια εναλλακτική με VBA Αρχίζει από Α 1 και καλύπτει 24 στήλες Τα εξαγόμενα καταγράφονται στο Α 14 και δεξιά όσο χρειάζεται Ακόμα: Μπορούμε να αλλάξουμε το φίλτρο σε TRUE ή FALSE κατ' επιλογή μας ενώ μετράει και στο σύνολο των στηλών πόσα TRUE ή FALSE έχουμε τέλος καθαρίζει την περιοχή των αντεγραμμένων κελιών Αν χρησιμοποιηθεί σε άλλη περιοχή απλά προσαρμόζουμε τον κώδικα... Καλή συνέχεια! |
Ειδατε τι κανει ενα C14 αντι του C4. Αυτο που με στεναχωρει Κ Θαναση και Κ Σπυρο ειναι οτι για μια δικη μου παραλειψη σας κανω να χασετε τον πολυτιμο χρονο σας. Πιστεψτε με δεν ειχα την προθεση για αυτο. Εαν ακομα θελετε να με βοηθησετε σας παραθετω προσεκτικα αυτη τη φορα τα στοιχεια. Α.Τα δεδομενα προς φιλτραρισμα ξεκινουν απο το C4. Β.Τα φιλτραρισμενα δεδομενα να πηγαινουν και αυτα στο C4. Εαν μπειτε στον κοπο να μου απαντησετε στο αρχειο που θα ανεβασετε παρακαλω πολυ να βαλετε στο C4 και οχι στο Α4 τα δεδομενα ουτος ωστε αν χρειαστει να αλλαξω κατι να μην χαθω μεσα στον κωδικα που τοσα λιγα καταλαβαινω. Καλημερα σας λοιπον και την ΣΥΓΝΩΜΗ μου για ακομα μια φορα. |
Καλημέρα Δεν είναι θέμα κόπου Γρηγόρη ή χάσιμο χρόνου Στο παράδειγμα το 1ο που ανέβασες το δείχνει ξεκάθαρα και στο φύλλο σου το ότι θέλεις να βάλεις στο C14 τα φιλτραρισμένα τέλος πάντων θα δούμε τι μπορεί να γίνει |
Να ειστε καλα Κυριε Σπυρο. Αναμενω . |
Γρηγόρη, στο αρχείο που σου ανέβασα χθες: 1) Κάνεις Αποκοπή την περιοχή Sheet1!C14:C21 2) Επικόλληση στο Sheet2!C4 3) Σύρε/αντέγραψε προς τα δεξιά την στήλη C του Sheet2 όσο θέλεις. Αν θέλεις μπορείς να αντιγράψεις και την γραμμή 11 του Sheet2 προς τα κάτω όσο θέλεις Την περιοχή Sheet1!D14:T21 μπορείς να την καθαρίσεις/σβήσεις. Με "Αντιγραφή" από το Sheet2 και "Επικόλληση Τιμών Μόνο" στο Sheet1 των γραμμών/στηλών που θέλεις νομίζω πετυχαίνεις το ζητούμενο. Μπορείς να το κάνεις χειροκίνητα ή με μακροεντολή. Πες μας αν έγινε. |
Λυπαμαι κυριε Θαναση αλλα δεν καταφερα κατι. Δεν ξερω τι ειναι αυτο που κανω λαθος. Χωρις να ενοχλω η λυση με κωδικα μου φανηκε πιο ευκολη. Εαν θελετε προσπαθηστε να κανετε κατι εκει . Φιλικα και με Εκτιμηση Γρηγορης. |
1 Συνημμένο(α) Καλημέρα σε όλους Κοίτα το συνημμένο και πες μας Θανάσης |
1 Συνημμένο(α) Καλησπέρα! Για όσους ενδιαφερθούν: Αφού χρησιμοποιούμε βιβλίο εργασίας με μορφή *xlsm θα ήταν πιο πρακτικό τα δεδομένα να βρίσκονται σε λίστα. Αυτό σε συνδυασμό με το InputBox της Excel (όχι της VBA) μπορεί να προσφέρει στον απλό χρήστη τη δυνατότητα να διευρύνει τα δεδομένα του όσο θέλει και να τοποθετήσει τα αποτελέσματα όπου θελήσει (στο ίδιο ή σε άλλο φύλλο), χωρίς περιορισμούς. Επισυνάπτω σχετικό παράδειγμα. Φιλικά Τάσος |
Καταπληκτικη δουλεια Κυριε Θαναση(ThanosP) ειστε αλλωστε τοσοι πολλοι που μπερδευετε κανεις. Σε αυτο λοιπον που ανεβασατε 2 πραγματα και ειμαστε ετοιμοι. 1.Οταν τελειωσει με το φιλτρο και βαλει ολα τα true αριστερα τα fulse να τα διαγραφει εντελως. 2.να μην εχω περιορισμο στον κωδικα που να αφορα τον αριθμο των στηλων που εχω τα δεδομενα μου.να εχω δυνατοτητα να βαλω οσες στηλες θελω. Αυτα φιλοι μου και το τελειωσαμε. |
1 Συνημμένο(α) Αγαπητέ Γρηγόρη, αν διαβάσεις προσεκτικά το προηγούμενο** μήνυμα μου θα δεις ότι περιγράφεται ακριβώς αυτό που ζητάς. Παράθεση:
ΥΓ. Θανάση, Dim a(100), x, k, m, r, z, i As Integer σημαίνει: Dim a(100) As Variant, x As Variant, k As Variant, m As Variant, r As Variant, z As Variant, i As Integer |
1 Συνημμένο(α) Καλησπέρα "Dim a(100), x, k, m, r, z, i As Integer", οι τιμές που θα πάρουν οι μεταβλητές θα είναι ακέραιοι αριθμοί δεν είναι απαραίτητο να ορίζεται η κάθε μια ξεχωριστά, για τον Τάσο. Γρηγόρη, πρέπει να είναι εντάξει !! Θανάσης |
t(i, r) = Cells(m, a(i)) Εδω μου χτηπησε run-time error 9 subscipt out of range οταν επιχειρησα να βαλω 650 στηλες με δεδομενα απο ενα αλλο φυλλο. υπαρχει καποιος περιορισμος που πρεπει να εχω υποψην? ΕΥΧΑΡΙΣΤΩ. |
1 Συνημμένο(α) Αγαπητέ Θανάση, 1) Οι μεταβλητές στη στη VBA και στη VB6 θεωρούνται Variant αν δεν ακολουθεί το διευκρινιστικό As μετά από την κάθε μια χωριστά. Η εικόνα από τον VBE στο αρχείο σου δείχνει καθαρά τον τύπο των μεταβλητών που δηλώνεις: Συνημμένο Αρχείο 3632 Εδώ υπάρχει και σχετικό άρθρο: Declaring Variables 2) Δεν υπάρχει λόγος το Range του φύλλου που είναι από μόνο του πίνακας (Array) να το ξαναπερνάς σε Array. Ο κώδικας είναι γρηγορότερος και ευανάγνωστος όταν χρησιμοποιείς κατευθείαν το Range Object. Έδωσα ήδη 2 παραδείγματα που ελπίζω ότι θα ωφελήσουν κάποιους που έχουν βέβαια κάποιες γνώσεις VBA και Excel. Θα προσπαθήσω να απλοποιήσω τη διαδικασία παραθέτοντας τον παρακάτω κώδικα που βασίζεται στο ζητούμενο του θέματος (έτσι όπως εξελίχθηκε): Κώδικας: Sub DeletAllFalseColumns() |
Γεια στον κώδικα που σπάει αλλαξε τις 1ες γραμμές πχ Dim a(100), x, k, m, r, z, i As Integer Dim t(100, 10000), kol1 As String θανασης |
Έτσι που εξελίχθηκε το θέμα όπως είπε και ο Τάσος, θα έλεγα γιατί δεν χρησιμοποιούμε απλά οριζόντια ταξινόμηση με κλειδί την γραμμή 4 για τον διαχωρισμό των True False Κώδικας: Option ExplicitΔουλεύει χωρίς βέβαια να είναι ένα κουμπάκι που το κάνει αυτόματα. Το ξέρω ότι οι αυτοματισμοί απαιτούν λιγότερη προσπάθεια από την πλευρά του χρήστη και πολλοί τους προτιμούν. |
Καλησπέρα Το θέμα στο φόρουμ δεν είναι ο χρήστης που βάζει κάποιο ερώτημα να χρησιμοποιήσει τον δικό μας τρόπο οπωσδήποτε. Το θέμα είναι να λύσει το πρόβλημά του με τον σωστό τρόπο. Θεωρώ λοιπόν ότι εδώ που έχει φτάσει το θέμα μετά την αλλαγή περιοχής από τον Γρηγόρη ο μόνος ενδεδειγμένος τρόπος είναι του Τάσου. Από εκεί και πέρα επειδή έκανα και κάποιες άλλες δοκιμές ο κώδικας του Θανάση - ThanosP έχει πάρα πολλά λειτουργικά λάθη όπως το Loop Until που καθυστερεί υπερβολικά κλπ Όσο για τις μεταβλητές φίλε Θανάση δεν τις ορίζουμε με τον τρόπο που χρησιμοποιείς γιατί έτσι μόνο η τελευταία που ακολουθείται από As κάτι ......χαρακτηρίζεται ΥΓ Θανάση (Στυλιανίδη) δεν σε είδα την ώρα που έγραφα |
καλημερα σε ολους. Δεν μπορεσα να σας απαντησω νωριτερα και αυτο γιατι επεξεργαζομουνα τις λυσεις ολων σας που τοσο θερμα σας ΕΥΧΑΡΙΣΤΩ. Ειναι κριμα που δε μπορω να ανεβασω ενα δειγμα του πραγματικου αρχειου το οποιο κατασκευαζω και αυτο γιατι ειναι α- δυνατο(προσωπικοι λογοι).Και ετσι να μην ηταν παλι δε θα ανεβαζα ευκολα το πραγματικο αρχειο γιατι ο λογος που ειμαι μαζι σας σε αυτο το FORUM δεν ειναι να κανει καποιος αλλος τη δουλεια τη δικη μου.Μεσα απο τις απαντησεις-λυσεις σας προσπαθω να το παλεψω οσο μου επιτρεπουν οι γνωσεις της εφαρμογης βεβαια. Τωρα στο θεμα μας. Θα κρατησω τελικα τη λυση του Κ.Τασου (RemoveFALSE). Κυριε Τασο εαν πραγματικα ειλικρινως ομως δεν εχω κουρασει και μπορειτε να μου δωσετε μια απαντηση σε κατι τελευταιο εαν οχι δεν πειραζει θα το κανω χειροκινητα θα ηθελα το εξης. *Σας περιγραφω λιγο τι σκεφτομαι και πως μπορω να το εχω αυτο αυτοματοποιημενο εαν γινετε φυσικα. Το δικο σας Φυλλο(Sheet1) το προσθεσα στο βιβλιο μου.Στο Sheet2 και στην γραμμη 4 απο την στηλη C μεχρι και οσα ειναι τα δεδομενα καθε φορα εχω τυπο που μου δινει καθε φορα TRUE η false. Τι κανω λοιπον χειροκινητα. Ξεκιναω απο το sheet2.εκει δινω εναν περιορισμο και οι στηλες μου στην γραμμη 4 αρχιζουν και γινονται true,false. Μολις αυτο γινει κανω copy ολες τις στηλες αυτες μαζι με τα true false και κανω ειδικη επικκοληση(τιμες μονο)στο δικο σας φυλλο (sheet1).Εκει ξεκαθαριζει και κραταει μονο τα true.τα παιρνω ΧΩΡΙΣ τις επικεφαλιδες true κελι Α5 δηλ και τα κανω copy στο sheet2 στο C5.Και παει λεγοντας. τι μπορω να κανω γι αυτο και τι πρεπει να προσεξω? ΧΙΛΙΑ ΕΥΧΑΡΙΣΤΩ για ολα. Με τιμη ΓΡΗΓΟΡΗΣ. Υ.Γ Το μηνυμα αυτο δεν ειναι προσωπικο για τον Κ Τασο.Δεκτη η βοηθεια απο ολους. |
1 Συνημμένο(α) Γειά σας Μιά άλλη λύση προσαρμοσμένη ... |
Καλημέρα/Καλησπέρα, για δοκιμάστε και αυτό αν θέλετε το μόνο που χρειάζεται είναι να έχουμε μια κενή γραμμή οπουδήποτε στο φύλλο εγω χρησιμοποίησα την γραμμη 2 (Const i=2) και υπέθεσα ότι τα true false είναι στη γραμμή 4 (Const j=2) Αλλαξτε τα στην αρχή του κώδικα αν χρειαστεί. Κώδικας: Option Explicit |
Καλησπέρα! Θανάση (Thanosp) πολύ καλό και εύστοχο! Αν τελικά αυτό είναι το ζητούμενο του Γρηγόρη θα ήθελα να δοκιμάσεις το παρακάτω (λειτουργεί μέχρι και 16.382 στήλες ): Κώδικας: Sub DeletAllFalseColumns()Τάσος |
Πολύ φανταστικό !!! Και όμως η λύση είναι σε μία γραμμή,Συγχαρητήρια Θανάσης |
1 Συνημμένο(α) Κυριοι καλησπερα σας. Ειλικρινα ειναι το τελευταιο post για το θεμα γιατι νιωθω οτι εχω κουρασει απαντες με αυτο.Εχω κανει τον καθενα σας να γραψει απο 7000 γραμμες κωδικα που ισως και να μην χρειαζοταν.Πηρα το φυλλο εκεινο το πραγματικο και αφου το εκανα μερικες αλλαγες(ετσι επρεπε) σας το ανεβαζω και περιμενω την "κατσαδα"σας γιατι δεν το εκανα νωριτερα. Δειτε λιγο το αρχειο και τους τυπους και θα το καταλαβετε με μιας εσεις που ειστε ειδικοι. Εβαλα ετσι ενα κομματι 729 στηλων και στο κιτρινο πλαισιο βαλτε για μερικες φορες περιορισμους. θα δειτε πως οι στηλες γινονται true ,false και τι ακριβως ζητουσα απο την αρχη. Μολις βαλατε τον πρωτο περιορισμο και δειξουν οι στηλες true,false κρατηστε αυτες που ειναι true πχ P P P P P P 2-4 (MENOYN 460 Σηλες) τωρα βαλτε εναν δευτερο περιορισμο κοκ. να κανει φιλτρο εκει επιτοπου. |
1 Συνημμένο(α) Γεια και καλή τύχη |
1 Συνημμένο(α) Καλησπερα και ευχαριστω για την υπομονη σας. Κυριε Θαναση δεν εχω λογια ειναι ΑΚΡΙΒΩΣ αυτο που ζητουσα. Δειτε λιγο σας παρακαλω ενα παραδειγμα (δωστε με τη σειρα τα δεδομενα) και εκει υπαρχει καποιο λαθος στο μετρημα, οταν βαζω διπλα δεδομενα σε ενα κελι η αφηνω μια γραμμη η και περισσοτερες κενη. Πρεπει να ειναι λαθος μαλλον δικο μου στους τυπους. ανεβαζω παραδειγμα και δινω και πως μετρανε κανονικα οι στηλες. |
1 Συνημμένο(α) Καλημέρα Σου στέλνω ανάλογο αρχείο για 6 αγώνες, πιο απλό όπου περνάς όλους τους περιορισμούς σε μία γραμμή. Θανάσης |
1 Συνημμένο(α) Καλημερα σε ολους(&Κ θαναση) Σας κουραζω το ξερω αλλα εδω που φτασαμε ειναι κριμα να μην το τελειωσουμε. πιστευω πως το προηγουμενο σας post ηταν ιδανικο.Εκει λοιπον ελειπε μια διορθωση στο να κρατα τις καινουργιες στηλες καθε φορα που βαζεις εναν περιορισμο.τιποτα αλλο. Βαζετε τον 1ο περιορισμο - φιλτραρει- μενουν στηλες.Δευτερος περιορισμος φιλτραρει επι των καινουριων στηλων - μενουν αλλες στηλες κοκ.. Οπως και να εχει ΥΠΟΧΡΕΩΜΕΝΟΣ και βαθυτατα ευγνωμων. Καλημερα σε ολους. |
Καλησπέρα! Όπως το είχαμε καταλάβει από την αρχή του θέματος επρόκειτο για επιλύσεις αποτελεσμάτων τυχερών παιχνιδιών. Τις επιλύσεις και τις τακτικές αυτές δεν τις υποστηρίζουμε γιατί:
Το θέμα ύστερα από παράκληση αρκετών μελών του θέμα κλείνει εδώ για τους εξής λόγους:
|
| Η ώρα είναι 21:47. |
Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.