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/1346-anazitisi-se-perissotera-filla-me-tipo.html)

Aris 05-09-11 10:33

Αναζήτηση σε περισσότερα φύλλα με τύπο
 
Καλημέρα σας!

Υπάρχει τρόπος να γίνει αναζήτηση σε περισσότερα φύλλα σε ένα βιβλίο εργασίας
αλλά με χρήση τύπου;

Δηλαδή να εισάγεται στα κελιά της στήλης Α το κριτήριο και στις διπλανές στήλες να
επιστρέφει τα τις στήλες που ανήκουν στην εγγραφή που θα βρεθεί;

Επίσης μπορούμε να γνωρίζουμε το φύλλο προέλευσης της εγγραφής που θα βρεθεί από την αναζήτηση;

Ευχαριστώ για το χρόνο σας!

Φιλικά

Άρης

gr8styl 05-09-11 16:12

1 Συνημμένο(α)
Φίλε Άρη,
δες στο συνημμένο μια προσσέγγιση.
Αν μας ανέβαζες ένα παράδειγμα, τα πράγματα θαήταν ευκολότερα.

Φιλικά
Θανάσης

Lefteris 05-09-11 16:17

Καλησπέρα Άρη. Καλώς ήρθες στην παρέα, μιάς και είναι το πρώτο σου μήνυμα.

Είμαι σίγουρος, πως απάντηση στην ερώτησή σου, δίνει ο φίλος Θανάσης, σε ίδιο θέμα πρίν από καιρό.

Κοίτα λοιπόν στην σελίδα 5, στην ενότητα Excel-Ερωτήσεις-Απαντήσεις, του Forum, με τίτλο.

"Καταμέτρηση και συγκέντρωση συγκεκριμένων κωδικών από πολλά φύλλα σε ένα ..."

Ενημέρωσέ μας, αν βρήκες το ζητούμενό σου.


Φίλε Θανάση, απαντούσαμε μαζί, όπως φαίνεται...

Aris 05-09-11 16:49

Καλησπέρα και πάλι!

Θανάση, Λευτέρη με καλύψατε και με το παραπάνω!

Χρησιμοποίησα τελικά το συνημμένο του Θανάση.

Ευχαριστώ και πάλι για το χρόνο σας!

Να είστε όλοι καλά!

Με εκτίμηση.

Άρης

Lefteris 05-09-11 16:52

Καλησπέρα σε όλους.(Συγνώμη που δεν το έκανα, στο Π.Μ.)

Να κάνω μία (αφελή;;) ερώτηση θέλω, με αφορμή το συννημένο του Θανάση, που πράγματι για μία ακόμη φορά, είναι πάρα πολύ καλό.

Στις στήλες B:D, χρησιμοποιείται ένας τύπος για ένα-ένα τα φύλλα. Δηλ, στη στήλη Β, ο τύπος λέει;
Παράθεση:

=IF(OR(NOT(ISERROR(MATCH($A2;Data1!$A:$A;0)));NOT( ISERROR(MATCH($A2;Data2!$A:$A;0)));NOT(ISERROR(MAT CH($A2;Data3!$A:$A;0))));"Found";"Not found")
Δέν υπάρχει τρόπος, να δώσουμε ένα όνομα σε όλα(ή όσα) φύλλα θέλουμε και να χρησιμοποιούμε αυτό στους τύπους; Π.χ AllSheets ?

Και το ρωτάω αυτό, σκεπτόμενος, ότι αν έχω 15 φύλλα, για παράδειγμα, σε ένα βιβλίο, τότε μάλλον....θα τρελαθώ...."γράφοντας" τον τύπο.

Ευχαριστώ πολύ.

gr8styl 05-09-11 17:34

Παράθεση:

Αρχική Δημοσίευση από LEFTERIS (Μήνυμα 7907)
...Δέν υπάρχει τρόπος, να δώσουμε ένα όνομα σε όλα(ή όσα) φύλλα θέλουμε και να χρησιμοποιούμε αυτό στους τύπους; Π.χ AllSheets ?
....

Καλησπέρα φίλε Λευτέρη
Η απάντηση στην ερώτησή σου είναι όχι δεν μπορώ να χρησιμοποιήσω ένα ονομα που θα αναφέρεται σε 3 διαστατη αναφορά
'Data1:Data3'!$a:$a
Το δεύτερο όρισμα της MATCH πρέπει να είναι πίνακας που βρίσκεται σε μια συνεχή περιοχή ή αναφορά σε τέτοιου είδους πίνακα.
Όπως το Data1!$a:$a
Αν έχεις πολλά φύλλα και δεν θες VBA τότε η προσέγγιση που χρησιμοποίησα στις στήλες F:H είναι προτιμότερη. (Το όνομα του κάθε φύλου στην πρώτη γραμμή) και χρήση της INDIRECT.

Τα λέμε
Θανάσης.

Tasos 05-09-11 18:22

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

Στην ερώτηση σου λοιπόν.

Έστω ότι έχεις 3 φύλλα από τα οποία θέλεις να αναζητείς στις 3 πρώτες στήλες τους (A:C).

Τα κριτήρια αναζήτησης βρίσκονται στη στήλη A του φύλλου Search.

Στη στήλη Β θέλεις να επιστρέψεις τη δεύτερη στήλη από το φύλλο στο οποίο θα βρεθεί το κριτήριο.

Αν τα φύλλα προς αναζήτηση είναι αριθμημένα ( Φύλλο1, Φύλλο2, Φύλλο3 κτλ.) τότε μπορείς να χρησιμοποιήσεις τον τύπο στο B2:

Κώδικας:

=VLOOKUP($A2;INDIRECT("'Φύλλο"&INDEX({1;2;3;4};
MATCH(1;--(COUNTIF(INDIRECT("'Φύλλο"&{1;2;3;4}&"'!A:A");A2)>0);0))&"'!A:C");2;0)

όπου 2 = η δεύτερη στήλη της περιοχής A:C


Αν τα ονόματα των φύλλων δεν είναι αριθμημένα τότε έχουμε:
Κώδικας:

=VLOOKUP(A2;INDIRECT("'"&INDEX({"Φύλλο ένα";"Φύλλο δύο";"Φύλλο τρία"};
MATCH(1;--(COUNTIF(INDIRECT("'"&{"Φύλλο ένα";"Φύλλο δύο";"Φύλλο τρία"}&"'!A:A");A2)>0);0))&"'!A:C");2;0)

Σε περαιτέρω εξέλιξη, μπορείς να δημιουργήσεις έναν τύπο που θα σου χτίζει αυτό: {"Φύλλο ένα";"Φύλλο δύο";"Φύλλο τρία"}

Για παράδειγμα, μπορείς να βάλεις τα ονόματα των φύλλων σου σε ένα φύλλο ασ πουμε ξεκινώντας από το κελί A3

Ό τύπος που θα κτίζει την παραπάνω συμβολοσειρά είναι:
Κώδικας:

="{"""&SUBSTITUTE(A3&"""; """&A4&"""; """&A5&"""; """&A6&"""; """&A7&""";
"""&A8&"""; """&A9&"""; """&A10&"""; """&A11&"""; """&A12&"""; """&A13&"""; """&A14&""";
"""&A15&"""; """&A16&"""; """&A17&"""; """&A18&"""; """&A19&"""; """&A20&""";
"""&A21&"""; """&A22&"""; """&A23&"""; """&A24&"""; """&A25&"""; """&A26&""";
"""&A27&"""; """&A28&"""; """&A29;"; ";";")&"""}"

Προσοχή στα κενά κατά την επικόλληση!!

Μπορείς να δώσεις ένα όνομα στο κελί που περιέχει τον τύπο αυτό πχ. WksArray
και να διαμορφώσεις τον τύπο σου έτσι:

Κώδικας:

=VLOOKUP(A2;INDIRECT("'"&INDEX(WksArray;MATCH(1;--(COUNTIF(INDIRECT("'"&WksArray&"'!A:A");A2)>0);0))&"'!A:C");2;0)
Καλό βράδυ:

Τάσος

Lefteris 05-09-11 18:43

Ευχαριστώ πολύ και τους δυό σας.

Ξεκίνησα ήδη, να "παίζω" με αυτό που μου απάντησε ο Θανάσης, δια μορφώνοντας το συνημμένο του.

Τώρα μόλις είδα και την δική σου προσέγγιση Τάσο.

Όποτε μπορέσεις, ανέβασε και το δείγμα, που σίγουρα θα βοηθήσει.

Επειδή για μένα, η "ώρα του υπολογιστή" τελειώνει για σήμερα, θα το ψάξω αύριο το πρωί.

Και πάλι, ευχαριστώ πολύ.


Η ώρα είναι 11:42.

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


Search Engine Optimization by vBSEO 3.3.2