| Excel - Ερωτήσεις / Απαντήσεις Ότι έχει σχέση με συναρτήσεις, μορφοποίηση, εκτυπώσεις γραφήματα κτλ. |
![]() |
| | Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
| |
|
#1
| |||
| |||
|
Καλημέρα σε όλους Θα ήθελα να ζητήσω τη βοήθειά σας στην επίλυση του παρακάτω προβλήματος: Επισυνάψει 2 xls αρχεία [orders.xls & forwarding.xls] μεταξύ των οποίων θέλω να πραγματοποιήσω επιλεκτική μεταφορά δεδομένων. Το orders.xls αποτελείται από φύλλα εργασίας που περιλαμβάνουν λίστες παραγγελιών [ανταλλακτικών πλοίων. Κάθε φύλλο κι από ένα πλοίο] Το 2ο αρχείο, forwarding.xls, περιλαμβάνει μία λίστα με στοιχεία αποστολών [των παραγγελιών από το orders.xls στα πλοία]. Η στήλη με το συνδετικό δεδομένο είναι η “forwarding code” [στήλη “J” στο orders.xls & “A” στο forwarding.xls]. Η επιδιώξη μου είναι να δημιουργήσω μια συνάρτηση [ή φόρμουλα, ή macro, κλπ] η οποία για κάθε εγγραφή «forwarding code» της στήλης Α στο forwarding.xls, θα ψάχνει τις αντίστοιχες εγγραφές στη στήλη “forwarding code” του orders.xls, στό φύλλο που υποδυκνύεται από το όνομα του πλοίου, στήλη B [ship] στο forwarding.xls Για κάθε «forwarding code» του forwarding.xls υπάρχει μια [συνήθως περισσότερες της μίας] αντίστοιχη τιμή στη στήλη «forwarding code» του orders.xls. Η ενέργεια που θέλω να εκτελείται είναι η εξής: Στο στήλη C [Orders Fwded] του forwarding.xls να συμπληρώνονται τα [ή το] order Numbers [από τη στήλη A του orders.xls] που έχουν αποσταλεί με το εκάστοτε «forwarding code». Για παράδειγμα μπορείτε να αναφερθείτε στις γραμμές 2, 19 & 29 του forwarding.xls όπου έχουν συμπληρωθεί [χειροκίνητα] τα orders που έχουν αποσταλεί με το forwarding code της πρώτης στήλης [Α]. Ο στόχος μου μου είναι η συμπλήρωση των order Numbers στα κελιά της στήλης C [Orders Fwded] του forwarding να μην γίνεται με το χέρι, αλλά αυτόματα [με τη χρής κατάλληλης συνάρτηση [ή φόρμουλα, ή macro, κλπ]. Στην ιδανική περίπτωση, όλα τα άδεια κελιά της στήλης C [Orders Fwded] του forwarding θα πρέπει να συμπληρώνονται αυτόματα μονομιάς με τη χρήση της εντολής που θα φτιάξουμε. Ομως ακόμη κι αν χρειάζεται να «τρέχω» την εντολή για ένα – ένα κελί ξεχωριστά, ώστε να συμπληρωθούν τα αντίστοιχα Orders, θα ήταν απολύτως ικανοποιητικό. Αν κάποιος από τα μέλη μπορεί να βοηθήσει θα ήμουν ευγνώμων. |
|
#2
| ||||
| ||||
|
Καλησπέρα Μενέλαε, Το επισυναπτόμενο αρχείο περιέχει μακροεντολές και λειτουργεί ως εξής: 1. Με το κουμπί ΠΑΡΑΓΓΕΛΙΕΣ βρίσκεις το αρχείο που περιέχει τα πλοία με τις παραγγελίες τους. Στο παράδειγμά σου, θα αναζητήσεις να βρεις το αρχείο ORDERS.xlsx. 2. Θεωρώ ότι τα αρχεία των παραγγελιών έχουν ακριβώς την ίδια γραμμογράφηση με το ORDERS.xlsx. Δηλαδή η A στήλη Order No, η J στήλη Forwarding Code και η ονοματολογία των φύλλων είναι το όνομα του πλοίου, όπου ο χαρακτήρας "(" δηλώνει το τέλος του ονόματος του πλοίου. 3. Στο φύλλο ΠΡΟΧΕΙΡΟ, αφού διαγραφούν όλα τα δεδομένα που τυχόν υπάρχουν από προηγούμενες εκτελέσεις του κώδικα, θα αντιγραφούν απ' όλα τα φύλλα του αρχείου παραγγελιών οι στήλες Order No και Forwarding Code. Η μεσαία στήλη Ship είναι το όνομα του πλοίου , το οποίο προκύπτει από τα ονόματα των φύλλων (βλ. βήμα 2). Επίσης, το φύλλο αυτό θα μπορούσε να χρησιμοποιηθεί και ως ελεγκτικό μέσο βάζοντας φίλτρα στις στήλες. 4. Στη στήλη C αντιγράφονται οι αριθμοί των παραγγελιών (Order No) με διαχωριστικό το κενό διάστημα. Πριν τη μεταφορά όμως, τα δεδομένα της στήλης διαγράφονται. Θεωρώ ότι το αρχείο που θα ανοίγεται περιέχει πάντα όλες τις παραγγελίες έτσι ώστε να συμπληρώνεται πάντα από την αρχή η στήλη C. Ελπίζω να σε καλύπτει ο τρόπος χειρισμού του.
__________________ Your Curiosity Will Be The Death Of You! |
|
#3
| |||
| |||
| Παράθεση:
Μόλις αντιλήφθηκα την απάντησή σου και θέλω να σ’ ευχαριστήσω θερμά τόσο για την αμεσότητα όσο και για τον χρόνο [και κόπο] που αφιέρωσες για χάρη μου. Δυστυχώς ετοιμάζομαι να λείψω για λίγες μέρες και δεν προφταίνω να ελέγξω αν καλύπτει πλήρως το σκοπό μου. Όμως από την απάντηση [και τις οδηγίες σου] φαίνεται ότι πρέπει να με έχεις καλύψει σε μεγάλο βαθμό. Αφήνω ένα μικρό περιθώριο, αν χρειαστεί, να [κάνω κατάχρηση της καλοσύνης σου και να] επανέλθω για τυχόν απορίες/βελτιώσεις. Και πάλι ένα θερμό ευχαριστώ. |
|
#4
| |||
| |||
|
Καλημέρα Χρήστο, Βρήκα [επιτέλους] την ευκαιρία και έλεγξα τo αρχείο με τις μακροεντολές που μου έφτιαξες.. Σίγουρα δίνει ικανοποιητική λύση στο πρόβλημά μου, και [πάλι] σ’ ευχαριστώ. Θα ήθελα να ρωτήσω αν υπάρχει περιθώριο για 2-3 αλλαγές, ώστε να το προσαρμόσω καλύτερα στις πραγματικές συνθήκες που το χρειάζομαι: 1. Στη στήλη C [Orders Fwded] του forwarding.xls, θα μπορούσα να ορίζω εγώ από ποια σειρά [row] –ή κωδικό [forwarding code]- και κάτω να ξεκινάει η συμπλήρωση των παραγγελιών [Order Νος] ? ώστε: a. να μη γίνονται overwrite τα περιεχόμενα όλων των κελιών της στήλης ξεκινώντας από την κορυφή. b. Στην καθημερινότητα η μακροεντολή θα εκτελείται για να ενημερωθούν τα στοιχεία των τελευταίων [πχ 10] αποστολών [στο σύνολο των χιλιάδων που θα υπάρχουν παραπάνω και θα είναι ήδη ενημερωμένες] [Σημ: Εναλλακτικά ίσως θα μπορούσε η εντολή να εντοπίζει τα ασυμπλήρωτα [κενά] κελιά της στήλης και να συμπληρώνει μόνο αυτά. Φοβάμαι όμως μήπως έτσι σου προσθέτω παραπάνω δυσκολία] 2. Στο παράδειγμα που επισύναψα περιέλαβα στο αρχείο orders.xls 3 πλοία μόνο. Στη πράξη όμως ένας στόλος [μίας ναυτιλιακής εταιρείας] μπορεί να αποτελείται από πολύ περισσότερα πλοία [50+] και [για να είναι -πιο εύκολα- διαχειρίσιμα] χρειάζεται να κατανεμηθούν σε δύο - τρία αρχεία παραγγελιών. Σ’ αυτή την περίπτωση λοιπόν όταν εκτελώ τη μακροεντολή θα πρέπει να αντλήσει δεδομένα παραγγελιών από περισσότερα [του ενός] αρχεία.. Μπορείς να σκεφτεις κάποια λύση γι’ αυτό ? 3. Αν χρειαστεί να δημιουργήσω καινούργιο αρχείο [πχ Orders Fwded-1.xlsm], πως μπορώ να μεταφέρω τις μακροεντολές ? Και πάλι ευχαριστώ για τη μέχρι τώρα βοήθεια και ελπίζω να μην κάνω κατάχρηση. Αν είσαι του «Αυγούσου» -εγώ πάντως, όχι- εύχομαι Καλές Διακοπές Μενέλαος |
|
#5
| ||||
| ||||
|
Καλημέρα Μενέλαε, Χαίρομαι που το προηγούμενο αρχείο σου φάνηκε χρήσιμο! Ελπίζω το συνημμένο να σε καλύψει ακόμα περισσότερο. Ενώ στο προηγούμενο αρχείο μπορούσες να επιλέξεις μονάχα ένα αρχείο, πλέον μπορείς να ανοίγεις περισσότερα του ενός, αφού έγκειται στις ανάγκες της καθημερινότητας. Αν όμως κάποιο αρχείο δεν είναι σωστό, τότε η διαδικασία σταματάει και θα πρέπει να επιλέξεις από την αρχή τα σωστά αρχεία. Ως διαδικασία ελέγχου ορθών αρχείων θεωρώ πως το κελί A1 θα γράφει "Order No" και το J1 "Forwarding Code". Αν πιστεύεις πως πρέπει να προστεθεί κάτι επιπλέον στη διαδικασία, μου λες. Ενώ στο προηγούμενο αρχείο η στήλη C (Spares Orders Fwded) καθαριζόταν κάθε φορά που έτρεχε ο κώδικας για να συμπληρωθούν όλες οι εντολές από την αρχή, τώρα ο κώδικας ελέγχει ποια κελιά αυτής της στήλης είναι κενά και συμπληρώνει μονάχα αυτά, αφήνοντας άθικτα τα ήδη συμπληρωμένα. Ο λόγος που προτίμησα αυτήν την μέθοδο και όχι αυτή με την επιλογή γραμμής είναι λόγω του παρακάτω παραδείγματος: Έστω ότι ο στόλος αποτελείται από 70 πλοία, δηλαδή 70 φύλλα εργασίας (δε μας ενδιαφέρει το πλήθος των αρχείων στην προκειμένη περίπτωση). Βάζοντας γραμμή έναρξης αναγκαστικά για κάθε πλοίο, για να γλιτώσεις χρόνο θα πρέπει να έχεις το συγκεκριμένο πλοίο σε ένα αρχείο και να ανοίξεις μονάχα αυτό. Ειδάλλως, κάθε φορά που ο κώδικας θα διαβάζει ένα φύλλο εργασίας, θα σου ζητάει να βάζεις τη γραμμή έναρξης. Δε νομίζω ότι είσαι διατεθειμένος να το κάνεις αυτό 70 φορές μέχρι το πέρας της διαδικασίας! Για να αντιγράψεις τον κώδικα σε ένα νέο αρχείο, κάνεις τα εξής: 1. Ανοίγεις το επισυναπτόμενο αρχείο και πατάς ALT+F11. 2. Στο νέο παράθυρο και αριστερά, κάνε διπλό κλικ στο Module1. 3. Κάνε κλικ κάπου μέσα στον κώδικα, πάτα Ctrl+A για να επιλεγούν τα πάντα και τέλος, δεξί κλικ πάνω στο επιλεγμένο κείμενο και Αντιγραφή. 4. Άνοιξε το νέο σου αρχείο και πάτα πάλι ALT+F11. 5. Στο παράθυρο Project-VBAProject και κάτω από τη δενδροειδή μορφή, πάτα δεξί κλικ > Εισαγωγή > Module. 6. Στο κενό παράθυρο κάνε επικόλληση τον κώδικα από πριν και κλείσε το παράθυρο της VBA. 7. Κάνε εισαγωγή ένα νέο σχήμα για να λειτουργεί ως κουμπί εκτέλεσης της μακροεντολής. 8. Δεξί κλικ πάνω του, Αντιστοίχιση μακροεντολής, επέλεξε ForwardedOrders και ΟΚ. 9. Δημιούργησε ένα νέο φύλλο με όνομα ΠΡΟΧΕΙΡΟ και πρόσθεσε τις επικεφαλίδες Forwarding Code (στήλη A), Ship (στήλη B), Order No (στήλη C). 10. Για να λειτουργήσει ο κώδικας πρέπει να αποθηκεύσεις το αρχείο σε μορφή .xlsm. Αν η παραπάνω διαδικασία φαίνεται δύσκολη, τότε θα σου πρότεινα τα εξής: 1. Άνοιξε ταυτόχρονα το επισυναπτόμενο και το δικό σου αρχείο, το οποίο πρέπει να έχει τις ίδιες ακριβώς στήλες με το επισυναπτόμενο. 2. Στο επισυναπτόμενο διέγραψε όλα τα δεδομένα στις στήλες Α:Ο. 3. Αντέγραψε τις ίδιες στήλες από το αρχείο σου και επικόλλησέ τες στο καθαρό πλέον επισυναπτόμενο αρχείο. 4. Κλείσε το δικό σου και αποθήκευσε το επισυναπτόμενο αρχείο με τα νέα δεδομένα.
__________________ Your Curiosity Will Be The Death Of You! |
|
#6
| |||
| |||
|
Καλημέρα Χρήστο, Η αμεσότητα στις απαντήσεις σου είναι αφοπλιστική, αλλά και η επινοητικότητα σου στο να δίνεις αποτελεσματικές λύσεις. ΕΥΧΑΡΙΣΤΩ. Μου φαίνεται ότι μετά και την δεύτερη προσπάθειά σου με έχεις καλύψει σε ακόμα μεγαλύτερο βαθμό. Θα ελέγξω και θα επανέλθω αν χρειαστώ κάτι παραπάνω, ή για κάποια άλλη εφαρμογή -σχετιζόμενη πάντα με τα δύο αυτά αρχεία [orders.xls & forwarding.xls], που αποτελούν βασικά εργαλεία στη δουλειά μου. Αντλώ το θάρρος να σε ξαναενοχλήσω, καθώς ο ενθουσιασμός που διακρίνω στις απαντήσεις σου, δείχνει ότι -εκτός από τον κόπο, που σαφώς καταβάλεις- το διασκεδάζεις και λίγο ! |
|
#7
| |||
| |||
|
Χρήστο καλησπέρα, Επιχείρησα το test και μου έβγαλε error [βλ. συνημμένο] και από το [επίσης συνημμένο] debug υποπτεύομαι ότι υπάρχει ασυμβατότητα με τους ελληνικούς χαρακτήρες της ονομασίας των φύλλων [ΠΡΟΧΕΙΡΟ] και [όπως επίσης έχω κάνει highlight λίγες γραμμές παρακάτω στο debug] στην ονομασία του αρχείου [ΠΑΡΑΓΓΕΛΙΕΣ ΠΛΟΙΩΝ]. Το ίδιο error βγαίνει και όταν πάω να «τρέξω» το προηγούμενο αρχείο [Orders Fwded]. Νομίζω ότι φταίνε [ξανά] οι ελληνικοί χαρακτήρες του φύλλου ΠΡΟΧΕΙΡΟ [βλ. συνημμένο debug-2]. Αρχικά παραξενεύτηκα. Πως είχα ελέγξει το προηγούμενο αρχείο και τώρα βγάζει error ? Η απάντηση είναι ότι είχα κάνει την δοκιμή στο laptop, ενώ αυτή τη φορά στο σταθερό [desktop]. [Επίσης στο laptop είναι εγκατεστημένα Windows 10 and Office 365, ενώ στο desktop Windows 7 and Office 13, αλλά -στη συγκεκριμένη περίπτωση- δε νομίζω ότι παίζει ρόλο]. Αν οι υποψία μου είναι σωστή, θα μπορούσες να αντικαταστήσεις τα ελληνικά με αγγλικά [τόσο στη ονομασία των αρχείων και των φύλλων, όσο και στον κώδικα της VBA] και να μου τα ξαναστείλεις ? Ευχαριστώ |
|
#8
| |||
| |||
|
Στο προηγούμενο μήνυμα, μάλλον δεν επισύναψα επιτυχώς τα screenshots
|
|
#9
| ||||
| ||||
|
Καλησπέρα Μενέλαε, Για δοκίμασε το συνημμένο να δεις τη συμπεριφορά του. Αντικατέστησα τους ελληνικούς χαρακτήρες και μετέφρασα στα αγγλικά τα ελληνικά μηνύματα.
__________________ Your Curiosity Will Be The Death Of You! |
|
#10
| |||
| |||
|
Χρήστο καλησπέρα, Σε όσες δοκιμές έχω κάνει μέχρι τώρα δουλεύει ΑΨΟΓΑ Αν στην πορεία επισημάνω κάτι [ή σκεφτώ κάποια βελτίωση[ θα σου πώ. Ευχαριστώ ΠΟΛΥ. Μενέλαος |
![]() |
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
| |
| ||||
| Θέμα | Δημιουργός | Forum | Απαντήσεις | Τελευταίο Μήνυμα |
| [Συναρτήσεις] Μεταφορά δεδομένων από φύλλο excel | stavraetos | Excel - Ερωτήσεις / Απαντήσεις | 5 | 14-12-16 11:24 |
| [VBA] Αντιγραφή κελιών μεταξύ Αρχείων | Zounds | Excel - Ερωτήσεις / Απαντήσεις | 0 | 17-01-15 17:18 |
| [Συναρτήσεις] εύρεση σε λίστα και μεταφορά δεδομένων | Dietlosscoffee | Excel - Ερωτήσεις / Απαντήσεις | 0 | 23-10-14 19:50 |
| Μεταφορά δεδομένων πεδίων σε excel | comsup | Access - Ερωτήσεις / Απαντήσεις | 1 | 09-11-11 17:55 |
| [Γενικά] Βοήθεια excel μεταφορά δεδομένων | tasosk11 | Excel - Ερωτήσεις / Απαντήσεις | 3 | 18-08-11 12:55 |
Η ώρα είναι 17:18.



Υβριδικός τρόπος

