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

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

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

 

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

Φίλε Νίκο,
Η πρόταση που σου έκανα στο προηγούμενο ποστ δεν σε δεσμεύει άσχετα από την πολυπλοκότητα και δομή του βιβλίου σου.
Δες το συνημμένο, όπου έχω μαζέψει τα πακέτα σε ένα νέο φύλλο και υπολογίζω τα συνολικά μέτρα με συγκεντρωτικό πίνακα σε ένα δεύτερο φύλλο.
Τα φύλλα σου MOTER και CABLES δεν τα έχω πειράξει.

Μελέτησε το και νομίζω θα καταλάβεις τι γίνεται.
Αν όχι ρώτα στο φόρουμ

Καληνύχτα/καλημέρα
Θανάσης.
Συνημμένα Αρχεία
Τύπος Αρχείου: xls PROTYPH_LISTA_gr8styl.xls (165,5 KB, 17 εμφανίσεις)
Απάντηση με παράθεση
  #12  
Παλιά 19-05-11, 14:33
Όνομα: Νίκος
Έκδοση λογισμικού Office: Ms-Office 2010, Ms-Office 2013
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 10-05-2011
Περιοχή: Χαλκίδα
Μηνύματα: 26
Προεπιλογή

Λοιπόν φίλε Θανάση,

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

Σίγουρα θα το προτιμούσα σε VBA για να το εντάξω σε κάποια άλλα πράγματα που χρειάζονται κατά καιρούς. Επίσης το ότι τα πακέτα είναι σε γραμμές και όχι σε στήλες δεν με βολεύει. Για να καταλάβεις στο φύλλο Moter έχει κάποια... μοτέρ ανά γραμμή, με διάφορα στοιχεία και χαρακτηριστικά τους (στις στήλες Α-Χ) και στα "πακέτα" πρέπει να μπαίνουν τα καλώδια που χρειάζονται για κάθε μειωτήρα, γι'αυτό τα έχω ανά στήλες (Y-AC, AD-AH και AI-AM) και όχι ανα σειρές. Μάλιστα έχω 3 πακέτα (δλδ 3 διαφορετικά καλώδια που ίσως χρειαστούν για κάθε μοτέρ) και πιθανόν να χρειαστώ αργότερα και 4ο ή 5ο πακέτο!

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

Για να καταλάβεις, μέσα απο το Cables, αν τελικά καταφέρουμε με κάποια μακροεντολή να περνάει τα στοιχεία όπως τα θέλω από το moter, θα γίνεται εγαξωγή διαφόρων στηλών (με διάφορους συνδιασμούς) και είναι ένας ακόμα λόγος που τα προτιμώ στο ίδιο φύλλο. Και γενικά θα ήθελα να μην περιέχει μέσα κώδικα στα συγκεκριμένα σημεία (Cables-στήλες I και μετά) γιατί το excel αυτό χρησιμοποιείται από αρκετό κόσμο και όσο πιο απλό είναι τόσο το καλύτερο ("τρέξε την τάδε μακροεντολή" και τέλος!). Να είναι "καθαρό" σαν φόρμα, να το γεμίζουν με στοιχεία και να τρέχουν την μακροεντολή ώστε να παίρνουν μόνο αυτά που θέλουν χωρίς να ψάχνονται.

Και πάλι σ'ευχαριστώ για τον χρόνο σου, και σίγουρα αν δεν βρεθεί κάτι πιο κοντά σε αυτό που ψάχνω θα προσπαθήσω να το προσαρμόσω κάπως όσο μπορώ...
Απάντηση με παράθεση
  #13  
Παλιά 19-05-11, 15:31
Το avatar του χρήστη gr8styl
Super Moderator
Όνομα: Θανάσης Στυλιανίδης
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 19-10-2009
Περιοχή: Βρυξέλλες, Βέλγιο
Μηνύματα: 758
Προεπιλογή

Φίλε Νίκο,
εσύ ξέρεις την εφαρμογή σου καλύτερα από τον καθένα μας, άρα προχώρα όπως νομίζεις.
Εγώ απλά θα μου επιτρέψεις να σου πώ ότι όπως μας περιγράφεις τα πράγματα νομίζω ότι η αναθεώρηση οργάνωσης των δεδομένων σου είναι αναγκαία.
Προσωπικά δυσκολεύομαι πολύ να σε παρακολουθήσω !!!
Τέλος πάντων όπως προείπα εσύ ξέρεις καλύτερα.
Καλή συνέχεια.
Θανάσης
ΥΓ. Άλλαξα το πρόθεμα του θέματος σε "VBA" αφού αυτό είναι που σε ενδιαφέρει.
Απάντηση με παράθεση
  #14  
Παλιά 19-05-11, 16:24
Όνομα: Νίκος
Έκδοση λογισμικού Office: Ms-Office 2010, Ms-Office 2013
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 10-05-2011
Περιοχή: Χαλκίδα
Μηνύματα: 26
Προεπιλογή

Έγινε φίλε Θανάση,

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

Και πάλι σ'ευχαριστώ για τον κόπο, τον χρόνο και τις συμβουλές σου που μου είναι πολύτιμες και με έχεις βοηθήσει πολύ!
Απάντηση με παράθεση
  #15  
Παλιά 20-05-11, 10:40
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

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

Νίκο, το αρχείο που επισυνάπτω περιέχει μία υλοποίηση του ζητούμενου χρησιμοποιώντας VBA.
Προσπάθησα να κάνω τον κώδικα γενικό ώστε να αντιμετωπίζεται πχ η περίπτωση του μεταβλητού αριθμού των πακέτων, αλλά απαιτούνται και κάποιες προϋποθέσεις:
1)Οι τίτλοι των στηλών των πακέτων πρέπει να βρίσκονται στη γραμμή 2.
2) Ο τίτλος της πρώτης στήλης του πακέτου να είναι «CODE».
3) Να μη υπάρχουν αθροίσματα στη στήλη CODE των πακέτων.
4) Η στήλη CODE στο φύλλο «CABLES» να είναι ταξινομημένη κατά αύξουσα σειρά.
Σχετικά με την οργάνωση των δεδομένων σου, βλέπω ότι παρουσιάζει αδυναμίες και συμφωνώ απόλυτα με τις απόψεις του φίλου Θανάση.

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

Καλημέρα!

Για άλλη μια φορά με εντυπωσιάζει το πόσο πολύ όλα τα παιδιά με πολλές γνώσεις πάνω στο office βοηθάνε τόσο απλόχερα μέσα σε αυτό το forum! Πραγματικά δεν το έχω δει πουθενά αλλού αυτό, σε σημείο που ντρέπομαι που ζητάω βοήθεια σε θέματα αρκετά πολύπλοκα και τρώω χρόνο από τα παιδιά. Τι να πω, και πάλι πολλά πολλά ευχαριστώ σε όλους και συγχαρητήρια για το forum! Μακάρι να μπορώ και εγώ να βοηθάω όσο μπορώ σιγά σιγά.

Τώρα Γιώργο για το excelάκι που μου έφτιαξες. Είναι ακριβώς αυτό που ήθελα! Πολύ ωραία προσπάθεια και με πολύ καλό αποτέλεσμα! Μόνο μια ακόμα βοήθεια θα ήθελα. Έχει κάποιο λάθος μάλλον και αν αλλάξω δεδομένα στα Πακέτα (σβήσω, προσθέσω, κλπ) δεν δουλεύει σωστά. Αντί να περάσει τα δεδομένα στο cables, εμφανίζει έναν νέο φύλλο με τα δεδομένα (αυτό που κάνει όλη τη διαδικασία προφανώς). Προσπαθώ να διαβάσω στον κώδικα και να το διορθώσω αλλά δεν τα έχω καταφέρει. Βασικά δεν μπορώ να καταλάβω πότε ακριβώς βγάζει το πρόβλημα, αφού άλλες φορές δουλεύει άψογα, άλλες όχι.

Δεν έχω αλλάξει τίποτα από στήλες ή επικεφαλίδες αφού είδα ότι τις χρησιμοποιείς στον κώδικα, παραμόνο αλλάζω τα δεδομένα.

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

Edit: Λοιπόν μάλλον το πρόβλημα είναι το εξής. Αν υπάρχουν επικεφαλίδες σε κάποιο πακέτο (CODE,κλπ...) χωρίς να υπάρχουν δεδομένα από κάτω τότε βγάζει το πρόβλημα. Αν μπορόυμε να το βελτιώσουμε οκ, αν είναι δύσκολο δεν με πειράζει καθόλου, θα γίνεται πρόσθεση επικεφαλίδων μόνο αν έχω δεδομένα! Κατα τ'άλλα δουλεύει άψογα!!!!!!!!!!!!!!! Και πάλι σε ευχαριστώ πάρα πολύ Γιώργο!!!

Τελευταία επεξεργασία από το χρήστη nikosjc : 25-05-11 στις 09:04.
Απάντηση με παράθεση
  #17  
Παλιά 25-05-11, 12:31
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Καλησπέρα

Νίκο, αν αντικαταστήσεις το μπλοκ του κώδικα από τη γραμμή: 'Συγκέντρωση δεδομένων στο φύλλο WSW μέχρι και την: EnD With, με το παρακάτω μποκ, νομίζω ότι θα λυθεί το πρόβλημα.
Αν δε λυθεί ανέβασε ένα προβληματικό αρχείο για να το κοιτάξω καλύτερα.
Κώδικας:
'Συγκέντρωση δεδομένων στο φύλλο WSW
        rowCopy = 2
        For j = 1 To numPack
            colCopy = 0
            finalRow = .Cells(Rows.Count, startCol + (j - 1) * LenPack).End(xlUp).Row
            If finalRow > 2 Then
                For i = 1 To 3
                    colCopy = colCopy + 1
                    k = Choose(i, 0, 2, 4)
                    .Cells(3, startCol + (j - 1) * LenPack + k).Resize(finalRow).Copy
                    Cells(rowCopy, colCopy).PasteSpecial Paste:=xlPasteValues
                Next
                rowCopy = rowCopy + finalRow
            End If
        Next
    End With
Φιλικά/Γιώργος
Απάντηση με παράθεση
  #18  
Παλιά 25-05-11, 15:06
Όνομα: Νίκος
Έκδοση λογισμικού Office: Ms-Office 2010, Ms-Office 2013
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 10-05-2011
Περιοχή: Χαλκίδα
Μηνύματα: 26
Προεπιλογή

Φίλε γιώργο άψογος! Και εγώ εκεί το έψαχνα, στην finalRow πειράζοντας τα νούμερα, αλλά ήθελε το κάτι παραπάνω.

Σε ευχαριστώ και πάλι πάρα πολύ!
Απάντηση με παράθεση
Απάντηση στο θέμα

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


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

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


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

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


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