Excel - Ερωτήσεις / Απαντήσεις Ότι έχει σχέση με συναρτήσεις, μορφοποίηση, εκτυπώσεις γραφήματα κτλ. |
![]() |
| Εργαλεία Θεμάτων ![]() | Τρόποι εμφάνισης ![]() |
#1
| |||
| |||
![]()
Γεια σας και καλό φθινόπωρο! Είμαι νέος στο forum. Θα ήθελα να ρωτήσω το εξής: Χρησιμοποιώντας τη συνάρτηση INDIRECT, εισάγω τιμές στο αρχείο που δουλεύω από άλλα αρχεία. Το πρόβλημα είναι ότι για να δουλέψει αυτή η συνάρτηση, θα πρέπει τα αρχεία από τα οποία παίρνει τις τιμές να είναι ανοικτά. Υπάρχει τρόπος να λαμβάνω τα δεδομένα που θέλω χωρίς να χρειάζεται να τα ανοίξω; Είναι αρκετά "βαριά αρχεία" και ο υπολογιστής αργεί πολύ. Ευχαριστώ πολύ! |
#2
|
![]()
Καλημέρα Κωστή, καλώς όρισες στην παρέα μας. Ένας εναλλακτικός τρόπος, με τύπους, για να δουλεύει με κλειστό βιβλίο είναι ο εξής: Έστω βιβλίο 1, με δεδομένα = Book1 από A1 έως A10 Έστω βιβλίο 2, που θα «παίρνει» από το πρώτο = Book2 και τα θέλουμε έστω στο A1:A10 και πάλι. Στο A1 του δεύτερου βιβλίου: =[Book1.xlsx]Sheet1'!A1 Αυτό θα αλλάξει σε: ='C:\Users\χρήστης\Desktop\[Book1.xlsx]Sheet1'!A1 δηλαδή, θα δημιουργήσει ένα σύνδεσμο, με το path που είναι το βιβλίο. Με το Book1 κλειστό, ανοίγοντας το Book2 η excel ρωτάει αν θέλουμε να ανανεώσουμε τον σύνδεσμο ή τους συνδέσμους προς άλλα βιβλία. Μετά από αυτό, υπάρχει και ο κώδικας (VBA) Εδώ, θα πρέπει να έχουμε, απαραίτητα κατάληξη .xlsm για να λειτουργεί ο κώδικας και να είμαστε ακριβείς στο τι θέλουμε να πάει που. Σημείωση: 1. Σε Office Ελληνική γλώσσα το "Sheet" θα εμφανίζεται "Φύλλο" 2. Αν το φύλλο έχει ονομαστεί φυσικά εμφανίζεται το όνομα του. |
#3
| |||
| |||
![]()
Ευχαριστώ πολύ Σπύρο! Ο λόγος που επέλεξα την INDIRECT αντί για τη λύση που προτείνεις, είναι ότι το όνομα του αρχείου "source" είναι μεταβλητό. Σε κάποια φύλλα του βιβλίου 2 (ας πούμε worksheets1, 2, 3), θα είναι ως πηγή δεδομένων το βιβλίο 1 (αναφέρομαι στο παράδειγμά σου), στα επόμενα φύλλα 2,3,4 όμως, θα είναι ως πηγή δεδομένων πχ το βιβλίο 3, ενώ στα 4,5,6 θα είναι ως πηγή δεδομένων το βιβλίο 4. Όλα τα φύλλα του βιβλίου 1, (worksheets 1 εως 6), είναι ακριβώς τα ίδια. Αλλάζουν μόνο οι τιμές τους ανάλογα με το αρχείο που χρησιμοποιείται ως "πηγή". Στην περίπτωσή μου, πρέπει να φτιάξω 24 τέτοια sheets. Εάν χρησιμοποιήσω την indirect, μπορώ να αντιγάψω στο 1o sheet άλλες 23 φορές, και να έχω σε ένα ξεχωριστό sheet τα filenames και τα paths των αρχείων "πηγών", τα οποία θα χρησιμοποιεί η indirect. Στην περίπτωση της απευθείας αναφοράς, θα πρέπει να κάνω find/replace το κοπιαρισμένο filename από το προηγούμενο sheet με το εκάστοτε filename που θέλω να χρησιμοποιήσω ως source. Σωστά το λέω; Σχετικά με τη vba, υπάρχει περίπτωση να δουλέψει η Indirect ή η απευθείας αναφορά που προτείνεις, χωρίς να χρειάζεται να ανοίξω τα source αρχεία; Ευχαριστώ! ΥΓ [Ναι, έκανα λάθος. Δεν αναφερόμουν σε xlsx αλλά σε xlsm. Ενεργοποιημένα macros/vba.] ![]() |
#4
|
![]()
Καλημέρα Κωστή, κατ' αρχήν να κάνω ένα σχόλιο, σχετικά με το θέμα. Στα τόσα χρόνια που ασχολούμαι και εξειδικεύομαι, με την εφαρμογή της Excel, ποτέ μα ποτέ δεν χρειάστηκε να χρησιμοποιήσω σε δικά μου τουλάχιστον projects τέτοιες μεθόδους. Πάντα φρόντιζα να σχεδιάζω πρώτα αυτό που θέλω, να δω και να υπολογίσω το βάθος του και να το δημιουργήσω σε ένα και μόνο βιβλίο. Υπάρχουν όμως και περιπτώσεις, που μου έχουν ανατεθεί, που θα μπορούσε να χρησιμοποιηθεί μια τέτοια μέθοδος, γιατί δεν γίνεται διαφορετικά. Επειδή λοιπόν, η INDIRECT και κάποιες άλλες συναρτήσεις, είναι πολύ βαριές, ειδικά αν έχουμε πολλά δεδομένα, τότε πάντα, η λύση είναι ο κώδικας. Τώρα στο θέμα μας: Έχεις λοιπόν ένα βιβλίο(Χ) το οποίο παίρνει δεδομένα, από διάφορα βιβλία πηγές. Η κατάληξη, στα βιβλία αυτά δεν μας ενδιαφέρει. (.xls - .xlsx ή ότι άλλο) Το βιβλίο που δέχεται, θα είναι απαραίτητα .xlsm ή .xlsb Σχεδιάζεις, από που έρχεται και που πάει τι και με κώδικα, χωρίς να ανοίγεις τα βιβλία πηγές, κάνεις τις ενημερώσεις σου. Αυτό προϋποθέτει κάποια μελέτη. Τι θα κάνω, πως θα το κάνω, γιατί, τι θα πάρω και από πού. |
#5
| |||
| |||
![]()
Καλημέρα, κι ευχαριστώ για την απάντηση. Θα πάω στη λύση του κώδικα. Όντως είναι πολύ βαριά η indirect. Και πολύ βαριά τα αρχεία των "πηγών". Δυστυχώς δεν είναι δυνατόν να τα χωρέσω όλα σε ένα βιβλίο, λόγω όγκου και υπολογιστικής ισχύος που απαιτείται. Ο σχεδιασμός είναι απαραίτητος, όταν γνωρίζεις εξαρχής τί θέλεις να κάνεις. Όταν σου ανατίθενται άλλα στην αρχή και άλλα στο τέλος, τότε έχεις θέμα... Ευχαριστώ και πάλι. Καλημέρα. |
#6
|
![]()
Καλημέρα. Για να διευκολύνω ( αν και δεν γνωρίζω τα αρχεία ) την κατάσταση, θα πρότεινα το εξής: Κάνε έλεγχο στα βιβλία και αντικατέστησε αν είναι δυνατόν, συναρτήσεις όπως η Offset για παράδειγμα και ακόμη κατάργησε, αν υπάρχουν μορφοποιήσεις υπό όρους μη ζωτικής σημασίας. Μπορείς ακόμα και κάποιους υπολογισμούς, να τους αλλάξεις με κώδικα, αντί άλλης συνάρτησης. Τα βιβλία θα «ελαφρύνουν» κατά πολύ... Φρόντισε ακόμα (στον κώδικα), να σταματάς τα Events* και να τα επαναφέρεις και πάλι στο τέλος του, καθώς και την ανανέωση οθόνης*. *Αν κι εφ' όσον, δεν τροφοδοτούν φόρμες για παράδειγμα, που θα πρέπει να πάρεις κάτι από εκεί μετά την ενημέρωση τους ... |
#7
| |||
| |||
![]()
Ευχαριστώ. Θα προσπαθήσω να μεταφέρω όλες τις συναρτήσεις στον κώδικα καταρχήν. Conditional formatting δεν έχω στο συγκεκριμένο αρχείο. Απλή μορφοποίηση μόνο. Ευχαριστώ για τα tips. Όντως το screenupdate και τα events είναι ωφέλιμο να σταματούν. |
![]() |
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
| |
| ||||
Θέμα | Δημιουργός | Forum | Απαντήσεις | Τελευταίο Μήνυμα |
[Πρότυπα] Χρήση εξωτερικών αρχείων σε πρότυπο του excel. | panda72 | Excel - Ερωτήσεις / Απαντήσεις | 7 | 14-04-14 18:39 |
[Excel07] Ενοποίηση αρχείων excel-αυτόματη ενημέρωση | ΧΟΥ | Excel - Ερωτήσεις / Απαντήσεις | 5 | 17-02-13 23:46 |
[Γενικά] Αναζήτηση - Εκτέλεση - αρχείων στην Excel | Tasos | Excel samples - Χρήσιμα αρχεία & παραδείγματα | 0 | 10-02-13 20:12 |
[VBA] Αναζήτηση - Εκτέλεση - Διαγραφή αρχείων στην Excel | Tasos | Excel samples - Χρήσιμα αρχεία & παραδείγματα | 0 | 25-10-12 16:10 |
Αναζήτηση αρχείων με Excel (Εναλλακτική μέθοδος της 'FileSearch') | Ms-Office-Development Team | Excel samples - Χρήσιμα αρχεία & παραδείγματα | 0 | 21-01-10 07:03 |
Η ώρα είναι 23:32.