Forum

Αναζήτηση στο ms-office.gr

Πάμε!
ms-office.gr > Forum > Microsoft Excel > Excel - Ερωτήσεις / Απαντήσεις > [VBA] Excel Macro (έλεγχος διπλοεγγραφών)

Excel - Ερωτήσεις / Απαντήσεις Ότι έχει σχέση με συναρτήσεις, μορφοποίηση, εκτυπώσεις γραφήματα κτλ.

Απάντηση στο θέμα

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 10-05-11, 10:39
Όνομα: Νίκος
Έκδοση λογισμικού Office: Ms-Office 2010, Ms-Office 2013
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 10-05-2011
Περιοχή: Χαλκίδα
Μηνύματα: 26
Προεπιλογή Excel Macro (έλεγχος διπλοεγγραφών)

Καλησπέρα παιδιά, είμαι νέος στο forum και θα ήθελα τη βοήθεια σας.

Έχω ένα excel που στο πρώτο φύλλο περιέχει μια στήλη με κωδικούς, και σε μια 2η στήλη έχει ποσότητες. Οι κωδικοί πολλές φορές επαναλαμβάνονται μέσα στη λίστα με διαφορετικές ποσότητες κάθε φορά.

Θέλω με μια μακροεντολή, που να περνάει σε ένα άλλο φύλλο τους κωδικούς, αλλά μία μόνο φορά (δλδ αν έχει 3ς φορές τον κωδικο 0100, να τον περνάει μόνο μια φορά), και σε μια άλλη στήλη να προσθέτει τις ποσότητες που βρίσκει για τον κοινό αυτό κωδικό. Δλδ για τον 0100 που τον έχω 3ς φορές (με ποσότητα πχ 2τεμ στο κάθε ένα) να δημιουργεί:
| 0100 | 6 τεμ |.

Ελπίζω να έγινα κατανοητός, όποια βοήθειά σας πολύτιμη.

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

Τελευταία επεξεργασία από το χρήστη gr8styl : 19-05-11 στις 14:30. Αιτία: Αλλαγή προθέματος
Απάντηση με παράθεση
  #2  
Παλιά 10-05-11, 11:59
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 2016, Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.237
Προεπιλογή

Καλημέρα Νίκο και καλωσόρισες στο φόρουμ!

Δεν θα χρειαστεί VBA αφού το ζητούμενο μπορεί να γίνει από την επιφάνεια της Excel
εκτός και αν το φύλλο περιέχει πολλές χιλιάδες δεδομένα προς επεξεργασία

Βέβαια, αν παρόλα αυτά πρέπει η συγκεκριμένη διαδικασία να γίνει με VBA, κανένα πρόβλημα.

Σε κάθε περίπτωση όμως θα πρέπει να γνωρίζουμε αν τα περιεχόμενα στη στήλη των τεμαχίων είναι αριθμητικά ή κείμενα πχ. "8 τεμ."

Περιμένουμε νέα σου.

Φιλικά

Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών

Τελευταία επεξεργασία από το χρήστη Tasos : 10-05-11 στις 23:59.
Απάντηση με παράθεση
  #3  
Παλιά 10-05-11, 12:44
Όνομα: Νίκος
Έκδοση λογισμικού Office: Ms-Office 2010, Ms-Office 2013
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 10-05-2011
Περιοχή: Χαλκίδα
Μηνύματα: 26
Προεπιλογή

Φίλε Τάσο κατ'αρχήν σ'ευχαριστώ για την απάντηση.

Θα το ήθελα σε VBA περισσότερο για τις δυνατότητες παραμετροποίησης (να μπορώ να το αλλάξω ή να το προσαρμώσω μετά και σε άλλες μακροεντολές), και γιατί θα βγαίνει αυτόματα χωρίς να χρειάζεται να "σέρνεις" κάποια συνάρτηση ώστε να σου βγάζει το αποτέλεσμα.

Επίσης στην πραγματικότητα είναι λίγο πιο σύνθετο το πρόβλημα. Δλδ στο πρώτο φύλλο υπάρχουν 3ς στήλες με δεδομένα:
Α: Μηχάνημα, Β:Υλικό, Γ: Ποσότητα
Μηχάνημα 1 , Βίδα......, ......1
Μηχάνημα 2 , Ροδέλα.., ......4

Στο 2ο φύλλο έχει μια στήλη (πχ Α) που θα μπαίνει το Υλικό, αλλά οι ποσότητες τους μπαίνουν στις επόμενες στήλες (Β,Γ,Δ,κλπ) όπου έχουν ως επικεφαλίδα το Μηχάνημα! Πχ:
....Α......|.......Β..........|.........Γ...... ....| κλπ
Υλικό... | Μηχάνημα 1 | Μηχάνημα 2 | κλπ
Ροδέλα.| ......0...........| .......4..........| κλπ

Θέλω λοιπόν από το φύλλο1 "διαβάζοντας" την στήλη Β το Υλικό να το πηγαίνει στη Β του φύλλου2, να "βλέπει" ταυτόχρονα σε ποιο Μηχάνημα (Α) ανήκει και να προσθέτει εκεί την ποσότητα στην αντίστοιχη στήλη του φύλλου2.
Αν στη συνέχεια συναντήσει το ίδιο υλικό, αφού ελέγξει σε ποιο μηχάνημα ανήκει να παει και να προσθέσει εκεί την ποσότητα χωρίς να ξαναπεράσει το υλικό.

Να σημειώσω ότι η αντιστοιχία των μηχανημάτων "Μηχάνημα 1", "..2", κλπ του πρώτου φύλου που είναι σε στήλη προς τα κάτω, με το 2ο φύλλο που θα είναι επικεφαλίδες στηλών που θα περιέχουν ποσότητες, θα ήταν καλό να βγαίνει αυτόματα από αυτά που θα διαβάζει στο πρώτο φύλλο, αλλά μπορεί να γίνει και χειροκίνητα (βλέπεις τι μηχανήματα έχεις στο πρώτο φύλλο και πας και φτιάχνεις τις αντίστοιχες στήλες στο 2ο φύλλο με τις ονομασίες τους).

Το ξέρω ότι μάλλον τα παραδυσκόλεψα, γι'αυτό ζήτησα μόνο το ένα μέρος, θα το παλέψω και για αυτό με τα μηχανήματα, αλλά αν δεν βγάλω άκρη θα κοιτάξω να το κάνω για κάθε μηχάνημα ξεχωριστά.

Και πάλι σ'ευχαριστώ για τον χρόνο σου...

Α! Οι τιμές στον "κωδικό" περιέχουν και κείμενο και αριθμούς (δλδ αλφαριθμητικό) και στις "ποσότητες" περιέχει μόνο αριθμούς (ώστε να είναι δυνατή η πρόσθεση)...
Απάντηση με παράθεση
  #4  
Παλιά 10-05-11, 16:19
Το avatar του χρήστη gr8styl
Super Moderator
Όνομα: Θανάσης Στυλιανίδης
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-10-2009
Περιοχή: Βρυξέλλες, Βέλγιο
Μηνύματα: 823
Προεπιλογή

Φίλε Νίκο,
το Excel διαθέτει τον πολύ καλό μηχανισμό των Συγκεντρωτικών πινάκων (Pivot tables) που κάνει ακριβώς αυτό που ζητάς, χωρίς VBA, ταχύτατα και για τεράστιο όγκο δεδομένων αν χρειαστεί.

Νομίζω είναι η ιδανική λύση.

Δες το συνημμένο. και αν κάτι δεν είναι κατανοητό ρώτησε στο φόρουμ.

Φιλικά
Θανάσης
Συνημμένα Αρχεία
Τύπος Αρχείου: xls Pivot_machines.xls (14,5 KB, 89 εμφανίσεις)
Απάντηση με παράθεση
  #5  
Παλιά 10-05-11, 16:44
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.573
Προεπιλογή

Καλησπέρα στην παρέα

Στο αρχείο που επισυνάπτω το ζητούμενο υλοποιείται με τη βοήθεια συγκεντρωτικού πίνακα, όπως και στη λύση του Θανάση.
Η διαφορά είναι στο ότι η δημιουργία του συγκεντρωτικού πίνακα γίνεται με κώδικα και συνεπώς απαιτείται ενεργοποίηση των μακροεντολών.

Φιλικά/Γιώργος
Συνημμένα Αρχεία
Τύπος Αρχείου: xls PivotTable.xls (44,0 KB, 50 εμφανίσεις)
Απάντηση με παράθεση
  #6  
Παλιά 11-05-11, 09:42
Όνομα: Νίκος
Έκδοση λογισμικού Office: Ms-Office 2010, Ms-Office 2013
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 10-05-2011
Περιοχή: Χαλκίδα
Μηνύματα: 26
Προεπιλογή

Παιδιά σας ευχαριστώ πάρα πάρα πολύ για τον χρόνο και τις απαντήσεις σας!

Δυστυχώς τους pivot πίνακες δεν τους ξέρω καθόλου, οπότε θα κοιτάξω να "μελετήσω", να δω τι με βολεύει καλύτερα να χρησιμοποιήσω και πως. Σίγουρα θα βρω κολλήματα οπότε σύντομα, μόλις ξεκαθαρίσω λίγο το excel με τα δεδομένα (γιατί δεν είναι δικό μου και έχει πολύ μπλέξιμο), θα το ανεβάσω μήπως χρειαστεί να με βοηθήσετε και σε τίποτα άλλο, να το δείτε και στην πράξη.

Και πάλι χίλια ευχαριστώ!
Απάντηση με παράθεση
  #7  
Παλιά 11-05-11, 12:38
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 2016, Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.237
Προεπιλογή

Νίκο,
επειδή δε γνωρίζουμε το αρχείο σου, τα παραδείγματα που παίρνεις έχουν
γενικό χαρακτήρα.

Η καλύτερη λύση είναι αυτή του συγκεντρωτικού πίνακα.
Ωστόσο αν ο όγκος των δεδομένων και η ισχύς του υπολογιστή το επιτρέπουν, θα πρότεινα
σαν εναλλακτική λύση τη χρήση τύπων.
Εμπειρικά, αν πρόκειται για λιγότερες από 15.000 γραμμές με δέκα στήλες δεν θα παρουσιαστεί
ιδιαίτερο πρόβλημα στην απόδοση της εφαρμογής(ταχύτητα υπολογισμού) σε ένα μέσο υπολογιστή.

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

Μελέτησε το και αν χρειαστείς κάτι εδώ είμαστε.

Καλή συνέχεια!

Φιλικά

Τάσος
Συνημμένα Αρχεία
Τύπος Αρχείου: xls xl_Sum_Uniques.xls (187,5 KB, 83 εμφανίσεις)
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών
Απάντηση με παράθεση
  #8  
Παλιά 17-05-11, 12:27
Όνομα: Νίκος
Έκδοση λογισμικού Office: Ms-Office 2010, Ms-Office 2013
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 10-05-2011
Περιοχή: Χαλκίδα
Μηνύματα: 26
Προεπιλογή

Καλησπέρα παιδιά,

επέστρεψα και πάλι σ'αυτό το πρόβλημα, αυτή τη φορά με πιο απτά δεδομένα και θα ήθελα βεβαίως την βοήθεια σας. Έχω ανεβάσει και το excelάκι για να είμαι πιο σαφής.

Το excel περιέχει 2 φύλλα (moter & cables). Το cables έχει μια λίστα με σταθερά ανταλλακτικά ως βάση (καλώδια) τα οποία αυξάνονται κατά καιρούς με νέα υλικά. Οι στήλες από A έως G είναι πάντα στεθερές με συγκεκριμένες πληροφορίες για τα υλικά.
Το φύλλο Moter έχει διάφορους κινητήρες και στη συνέχεια έχει κάποια κελιά με στοιχεία για Καλώδια σε τρία "πακέτα" (Y-AC, AD-AH και AI-AM).
Γράφοντας στην στήλη CODE του κάθε πακέτου έναν κωδικό (πχ. 2001) "διαβάζει" από το φύλλο Cables το αντίστοιχο ανταλλακτικό και περνάει τις λοιπές πληροφορίες (ΤΥΠΟΣ ΚΑΛΩΔΙΟΥ - ΚΩΔΙΚΟΣ ΧΡΕΩΣΗΣ - ΚΩΔΙΚΟΣ ΑΠΟΘΗΚΗΣ). Τέλος συμπληρώνω την στήλη ΜΗΚΟΣ.

Τώρα θέλω το εξής.
Στο φύλλο Cables, από την στήλη I και μετά, να βγάζει σαν επικεφαλίδα (γραμμή 3) μια φορά κάθε ΚΩΔΙΚΟ ΧΡΕΩΣΗΣ που βρίσκει να περιέχεται στα τρία "πακέτα" του φύλλου Moter (όπως πχ έχω συμπληρώσει εγώ το K2423.0010B...). Στη συνέχεια από κάτω από κάθε ΚΩΔΙΚΟ ΧΡΕΩΣΗΣ, και αναλόγως τον κωδικό του ανταλλακτικού (πχ 2001) να κάνει μια σούμα τα μέτρα! Δηλαδή ελέγχει στο φύλλο Moter τι ανταλλακτικά έχει, και σε ποιους κωδικούς χρέωσης ανήκουν, να προσθέτει τα μέτρα και να τα βάζει στο φύλλο Cables στο αντίστοιχο κελί (CODE, ΚΩΔΙΚΟΣ ΧΡΕΩΣΗΣ).

Σημείωση: Στο φύλλο Moter η ποσότητα των μειωτήρων δεν είναι σταθερή, όπως και δίπλα τα "πακέτα" με τα ανταλλακτικά τους δεν είναι σταθερά και μπορεί να περιέχουν κενά (όπως έχω το παράδειγμα).

Ελπίζω να έγινα κατανοητός, εγώ δυσκολεύτηκα να καταλάβω πως θα έπρεπε τελικά να το κάνω για να πάρω τα αποτελέσματα που θέλω!!! Έχω σημειώσει και στο excel κάποια πράγματα.

Θα προτιμούσα κάποια λύση ή βοήθεια σε VBA (μακροεντολή) ώστε να το ταιριάξω με κάποια άλλα πράγματα που χρειάζομαι.

Ευχαριστώ πολύ!
Συνημμένα Αρχεία
Τύπος Αρχείου: xls PROTYPH LISTA V7 09-5-11.xls (142,5 KB, 50 εμφανίσεις)
Απάντηση με παράθεση
  #9  
Παλιά 17-05-11, 17:32
Το avatar του χρήστη gr8styl
Super Moderator
Όνομα: Θανάσης Στυλιανίδης
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-10-2009
Περιοχή: Βρυξέλλες, Βέλγιο
Μηνύματα: 823
Προεπιλογή

Παράθεση:
Αρχική Δημοσίευση από nikosjc Εμφάνιση μηνυμάτων
Καλησπέρα παιδιά,
επέστρεψα και πάλι σ'αυτό το πρόβλημα, αυτή τη φορά με πιο απτά δεδομένα και θα ήθελα βεβαίως την βοήθεια σας. Έχω ανεβάσει και το excelάκι για να είμαι πιο σαφής.

Το excel περιέχει 2 φύλλα (moter & cables). Το cables έχει μια λίστα με σταθερά ...
Φίλε μου θα πρέπει να το ξαναδείς γιατί έχω την εντύπωση ότι σου λείπουν στοιχεία για να κάνεις τους συσχετισμούς που αναφέρεις. και υπάρχουν πράγματα που δεν μας ξεκαθαρίζεις.
Eνώ μας λες ότι ο ΚΩΔΙΚΟΣ ΧΡΕΩΣΗΣ προκύπτει με βάσει το CODE από το φύλλο CABLES στο φύλλο CABLES δεν βλέπω καμμιά συσχέτιση CODE - ΚΩΔΙΚΟΣ ΧΡΕΩΣΗΣ !!!

Τέλος πάντων

Εγώ θα οργάνωνα τα δεδομένα μου ως εξής
Α) ένα φύλλο (Material) που θα είχε τις πληροφορίες για κάθε υλικό (στηλες A έως G του φύλλου Cables)
Β) ένα φύλλο με τα πακέτα (Packages) με τις ακόλουθες 6 στήλες
1) "Πακέτο" θα την συμπληρώνει ο χρήστης αν δεν μπορεί να βρεθεί κάπου
2) "Κωδικός" θα την συμπληρώνει ο χρήστης
3) "Τύπος Υλικού" θα υπολογίζεται από το φύλλο Material με βάση το "Κωδικός"
4) "Κωδ.Χρέωσης" δεν καταλαβαίνω από που μπορεί να υπολογιστεί άρα μάλλον θα την συμπληρώνει ο χρήστης
5) "Κωδ.Αποθήκης" θα υπολογίζεται από το φύλλο Material με βάση το "Κωδικός"
6) "Μήκος" θα την συμπληρώνει ο χρήστης
Γ) ένα φύλλο με συγκεντρωτικό πίκακα για τις 6 στήλες του "Packages" ώστε να υπολογίσω τα μέτρα ανά κωδικό και κωδ.χρέωσης ή ότι άλλο θέλω.

Δεν καταλαβαίνω οι στήλες A έως X στο φύλλο MOTER του παραδείγματός σου σε τι χρησιμεύουν, όπως και δεν καταλαβαίνω τον λόγο γιατί να έχεις τα αποτελέσματα των υπολογισμών στο ίδιο φύλλο με τον πίνακα των υλικών σου. (cables)

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

Φιλικά
Θανάσης
Απάντηση με παράθεση
  #10  
Παλιά 18-05-11, 20:13
Όνομα: Νίκος
Έκδοση λογισμικού Office: Ms-Office 2010, Ms-Office 2013
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 10-05-2011
Περιοχή: Χαλκίδα
Μηνύματα: 26
Προεπιλογή

Ναι φίλε gr8styl, έχεις δίκιο, έχω κάνει λάθος διατύπωση:

"Γράφοντας στην στήλη CODE του κάθε πακέτου έναν κωδικό (πχ. 2001) "διαβάζει" από το φύλλο Cables το αντίστοιχο ανταλλακτικό και περνάει τις λοιπές πληροφορίες (ΤΥΠΟΣ ΚΑΛΩΔΙΟΥ - ΚΩΔΙΚΟΣ ΧΡΕΩΣΗΣ - ΚΩΔΙΚΟΣ ΑΠΟΘΗΚΗΣ). Τέλος συμπληρώνω την στήλη ΜΗΚΟΣ."

Τον Κωδικό Χρέωσης τον βάζω εγω, και το μήκος προς το παρόν μπαίνει σε κάποια άλλη στήλη (U) και βγαίνει και στο "πακέτο", αλλά θα αλλάξει αυτό, εγώ όλες τις πληροφορίες από τα 3 πακέτα θέλω να τις παίρνω. Βασικά όπως ακριβώς είναι το excelακι δείτε το, για να είναι πιο κατανοητό.

Για τα υπόλοιπα, δυστυχώς τα δεδομένα που σας παραθέτω και τα 2 αυτά φύλλα, είναι υποσύνολο ενός τεράστιου αρχείου με πάρα πολλά δεδομένα που είναι "δεμένα" μεταξύ τους, και προσπάθησα να το καθαρίσω λίγο για να απλουστευθεί κάπως η δουλειά. Δεν μπορώ να το διαμορφώσω διαφορετικά.

Τέλος τα αποτελέσματα των υπολογισμών τα έχω στο ίδιο φύλλο με τον πίνακα των υλικών (cables) γιατί όλο αυτό γινόταν χειροκίνητα και βόλευε για να μην τα ξαναγραφω, αλλά και για να περιέχει και τα υπόλοιπα χαρακτηριστικά των καλωδίων.

Ελπίζω να έγιναν λίγο πιο ξεκάθαρα τώρα (?).
Απάντηση με παράθεση
Απάντηση στο θέμα

Ετικέτες
pivot, vba, συγκεντρωτικός πίνακας

Εργαλεία Θεμάτων
Τρόποι εμφάνισης

Δικαιώματα - Επιλογές
Δε μπορείτε να δημοσιεύσετε νέα μηνύματα
Δε μπορείτε να δημοσιεύσετε απαντήσεις
Δεν μπορείτε να επισυνάψετε αρχεία
Δεν μπορείτε να επεξεργαστείτε τα μηνύματα σας

Ο κώδικας ΒΒ είναι σε λειτουργία
Τα Smilies είναι σε λειτουργία
Ο κώδικας [IMG] είναι σε λειτουργία
Ο κώδικας HTML είναι εκτός λειτουργίας
Trackbacks are εκτός λειτουργίας
Pingbacks are εκτός λειτουργίας
Refbacks are εκτός λειτουργίας


Παρόμοια Θέματα

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
[Excel - VBA] δημιουργία email στο outlook με excel macro Βασίλης Καραχάλιος Visual Basic for Applications (VBA) 0 21-07-16 22:49
Διαγραφή διπλοεγγραφών ΚΩΣΤΑΣ2 Access - Ερωτήσεις / Απαντήσεις 6 21-07-12 07:03
[VBA] Πρόβλημα σε macro του excel izezios Excel - Ερωτήσεις / Απαντήσεις 3 25-05-12 22:37
Έλεγχος εγκυρότητας ΑΦΜ με συνάρτηση Excel. Tasos Χρηματοοικονομικές 0 30-09-11 09:06
[VBA] Έλεγχος ονόματος ενός φύλλου σε 850 αρχεία Excel! Charis Excel - Ερωτήσεις / Απαντήσεις 2 18-08-10 18:53


Η ώρα είναι 17:55.