Forum

Forum (https://www.ms-office.gr/forum/)
-   Excel - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/)
-   -   [VBA] αυτόματη αντιγραφή περιεχομένου κελιών (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/4234-aytomati-antigrafi-periexomenoy-kelion.html)

Payne83 14-07-16 18:46

αυτόματη αντιγραφή περιεχομένου κελιών
 
1 Συνημμένο(α)
Καλησπέρα σας,

Έχω μια ερώτηση.

Έχω ένα φύλλο ονόματι Active Maschines όπου έχω βάλει μορφοποίηση υπό όρους, 4 φανάρια. Τα νούμερα που βάζω αντιστοιχούν στις εβδομάδες του χρόνου. Έχω 50 διαφορετικές μηχανές. Τα φανάρια επίσης είναι ένα οπτικό βοήθημα να βλέπω ποίες είναι χρησιμοποιημένες πιο πρόσφατα. Κάθε κελί από το A1 μέχρι το A50 αντιστοιχεί σε διαφορετική μηχανή, Στο κανονικό το αρχείο έχω και πολλά στοιχεία από δίπλα για κάθε μηχανή.

Στο άλλο φύλλο ονόματι Active On Map έχω κάνει στο δικό μου κανονικό αρχείο ένα σχηματικό πλάνο χώρου όπου φαίνεται που βρίσκεται η κάθε μηχανή στον χώρο. Με τις αποστάσεις που έχει η κάθε μια. Σε κάθε μηχανή έχει ένα κελί από πάνω που έχει πιο έντονο περίγραμμα. Εκεί θέλω να αντιγράφεται αυτόματα το νούμερο και το φανάρι που έχω βάλει στο πρώτο φύλλο έτσι ώστε να βλέπω ποιες μηχανές ήταν και είναι ενεργές κάθε εβδομάδα και τις αποστάσεις που πρέπει καλύπτονται κάθε μέρα από τους εργάτες.


Αυτό που θέλω να γίνεται είναι αυτόματα κάθε φορά που γράφω τον αριθμό εβδομάδας στα κελιά από Α1 - Α50 να αντιγράφεται το νούμερο μαζί με το φανάρι στο κελί με έντονο περίγραμμα στο φύλλο Active on Map σε κάθε μηχανή.

Οι θέσεις των μηχανών δεν αλλάζουν.

Εάν υπάρχει κάποιο παράδειγμα μακροεντολών να γίνει στο αρχείο Test1 που επισυνάπτω θα το προσαρμόσω μετά εγώ στο δικό μου αρχείο.

Ας δοκιμάσουμε στο αρχείο που επισυνάπτω για τις πρώτες 11 μηχανές.

Ελπίζω να έχω γίνει κατανοητός.

Ευχαριστώ!

Payne83 17-07-16 22:32

Εάν βάλω αυτόν τον κώδικα στην ενεργοποίηση και απενεργοποίηση της φόρμας

Worksheets("Active Maschines").Range("A1").Copy _
destination:=Worksheets("Active On Map").Range("C4")

Αντιγράφει τον σωστό αριθμό αλλά από τα φανάρια αντιγράφει μόνο το πρώτο το οποίο στην μορφοποίηση υπό όρους είναι το πράσινο. Περίεργο....

Ξέρετε για ποιόν λόγο γίνεται αυτό?

Επίσης ακόμα και δούλευε και να αντέγραφε και το σωστό φανάρι θα χρειαζόταν μια επαναληπτική μέθοδο (Loop) για να μην γράφω τον ίδιο κώδικα για 50 φορές για κάθε κελί ξεχωριστά. Το δύσκολο πάλι εδώ είναι ότι στην φόρμα Active On Map οι μηχανές είναι διάσπαρτες με βάσει την θέση τους στον χώρο και όχι η μία κάτω από την άλλη.

kapetang 18-07-16 09:18

1 Συνημμένο(α)
Καλημέρα

Επειδή, οι μηχανές στο φύλλο Active on Map είναι διάσπαρτες, είναι απαραίτητο να δώσεις σε κάθε μηχανή έναν κωδικό (ταυτότητα) ίδιο και στα δύο φύλλα.

Το παράδειγμα που ανέβασες είναι πολύ πρόχειρο (στους κωδικούς Α1, Α2, κλπ το A άλλοτε είναι ελληνικό και άλλοτε αγγλικό!).

Δες μια πρόταση στο συνημμένο.

Φιλικά/Γιώργος

Payne83 19-07-16 16:43

Καλησπέρα

Ευχαριστώ πολύ για την πρόταση είναι πολύτιμη. Έχω προσαρμόσει τον κώδικα στο δικό μου αρχείο και δουλεύει.
Τι θα έπρεπε να αλλάξω έτσι ώστε να μην ανανεώνει (αντιγράφει) κάθε φορά που περνάω μια τιμή στο κελί στην φόρμα Active Maschines αλλά να γίνεται όταν τελειώσω όλες τις εισαγωγές και πατήσω πάνω στην φόρμα Active On Map?

Ευχαριστώ!

kapetang 19-07-16 18:09

Για να μη γίνεται ενεργό το φύλλο [Active On Map], κάθε φορά που αλλάζει τιμή η εβδομάδα στο φύλλο [Active MasChines], αμέσως μετά τη γραμμή κώδικα:

ExitSub:

Πρόσθεσε τη γραμμή:

Sheet1.Activate

Payne83 20-07-16 14:51

Καλησπέρα.

Ευχαριστώ πολύ. Έβαλα την γραμμή κώδικα και δουλεύει άψογα.

Μία άλλη ερώτηση. Υπάρχουν διαφορετικές μηχανές για διαφορετικό σκοπό η κάθε μία. Εγώ τις έχω με διαφορετικό χρώμα και στα δύο φύλλα.

Πως μπορώ να βλέπω πόσες από το σύνολο του κάθε είδος μηχανών δουλεύουν γενικά σε όλες τις εβδομάδες? Πχ οι μηχανές m1,m5,m11,m12m18,m23,m28,m34,m39 ανήκουν σε μία ομάδα στο φύλο Active Machines Σκέφτηκα να χρησιμοποιήσω την συνάρτηση Countif και να βάλω μέσα κριτήριο να ψάχνει για κάθε ομάδα μηχανών στα ανάλογα κελιά που βάζω τις εβδομάδες αν η τιμή είναι >0 αλλά το πρόβλημα είναι ότι η συνάρτηση δουλεύει μόνο όταν τα κελιά που ψάχνω είναι σε σειρά. Όταν είναι διάσπαρτα νομίζω πρέπει να χρησιμοποιηθεί ένας συνδυασμός Sum Vcount και Indirect? Μέχρι στιγμής είτε δεν μου βγάζει αποτέλεσμα είτε λέει ότι συνάρτηση έχει κάποιο πρόβλημα.

Μήπως είναι καλύτερο να γίνει με κώδικα VBA?

Κάποια ιδέα πάνω σε αυτό?

Ευχαριστώ!

kapetang 20-07-16 16:20

1 Συνημμένο(α)
Αντώνη, δες μια πρόταση στο συνημμένο

Payne83 25-07-16 20:44

1 Συνημμένο(α)
Ευχαριστώ για τις προτάσεις.

Προσπαθώ να το κάνω και στο δικό μου αρχείο άλλα δεν δουλεύει. Μήπως μπορείς να μου πεις γιατί? Το έχω επισυνάψει.

Επίσης για να μην επιλέγω κάθε φορά από το drop down menu το Group θα μπορούσε μήπως και να γίνει αλλιώς και να βγάζει σε έναν πίνακα (όπως έχω κάνει στο αρχείο) συνέχεια πόσες μηχανές είναι ενεργές κάθε εβδομάδα?

Ευχαριστώ!

Payne83 26-07-16 05:20

1 Συνημμένο(α)
Ειχα ένα λάθος στον αριθμό των μηχανών τύπου 22Ε και το ξανα ανέβασα το αρχείο.

Payne83 26-07-16 06:15

Για να μην χρησιμοποιώ το drop down menu με τα Group σκέφτηκα να βάλω σε κάθε κελί στο πινακάκι που έκανα τον ίδιο ερώτημα μόνο που μέσα στο INDIRECT() να έχει απευθείας τα ονόματα των ομάδων (Names Manager). πχ για να βγάζει τις μηχανές τύπου 10Ε, INDIRECT(M10E)...

Απλά δεν μου βγάζει σωστό αποτέλεσμα σε καμία περίπτωση.

kapetang 26-07-16 08:13

1 Συνημμένο(α)
Καλημέρα

Όπως σημειώνω στο συνημμένο του προηγούμενου μηνύματός μου, ο υπολογισμός γίνεται με τύπο πίνακα.

Αυτό απαιτεί, μετά την πληκτρολόγηση του τύπου, το πάτημα του συνδυασμού πλήκτρων: Ctrl+Shift+Enter.

Payne83 26-07-16 10:00

Μάλιστα ευχαριστώ να σαι καλα.

Επίσης σκέφτηκα να ενσωματώσω και μια λίστα με τις εβδομαδες του χρόνου (52) ώστε να μπορώ να βλέπω τις μηχανές που είναι ενεργές και ανάλογα με την εβδομάδα. Πχ απο την μία λίστα να επιλέγω Group Μ10Ε και απο την άλλη το νούμερο 2 και να βγάζει όλες τις Μ10Ε που έχουν τον αριθμό 2 και να εμφανίζει το σύνολο.

Είναι εφικτό αυτό? Ελπίζω να μην γίνομαι πολύ κουραστικός.

Ευχαριστώ εκ των προτέρων.

kapetang 26-07-16 14:46

1 Συνημμένο(α)
Στο συνημμένο παρουσιάζονται δύο τρόποι φιλτραρίσματος και καταμέτρησης των μηχανών που ικανοποιούν τα κριτήρια.

Στο φύλλο [Test 1] απλά εφαρμόζουμε αυτόματο φίλτρο και στο κελί C5 παίρνουμε το πλήθος των μηχανών που ικανοποιούν τα κριτήρια.

Στο φύλλο [Test2] χρησιμοποιούνται τύποι πίνακα.

Αφού επιλέξουμε βδομάδα και τύπο μηχανής οι τύποι εμφανίζουν μόνο τις μηχανές που ικανοποιούν τα κριτήρια και υπολογίζουν και το πλήθος τους.


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

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


Search Engine Optimization by vBSEO 3.3.2