Προς το περιεχόμενο

Excel VBA


progx

Προτεινόμενες αναρτήσεις

Δημοσ.

Αρκετα προσφατα αρχισα να ασχολουμε με vba ετσι θα ηθελα την βοηθεια για το παρακατω.

Εχω βαλει σαν επισυναψη το παρακατω excel αρχειο για να δωσω μια ιδεα για τον πινακα μου.

θα ηθελα να κανω το εχης,παντα σαν macro οποτε φορτωνει το sheet.

 

Πρεπει να πολλαπλασιάσω τον καθε αριθμο με την αντιστοιχη δυναμη οριζοντια και επειτα το αθροισμα αυτης της πραξης

με την αναλογη δυναμη καθετα,

π.χ την τιμη του κελιου C1 * C6 * A1 στην συνεχεια το C2 * C6 * A2 και στην συνεχεια το αθροισμα ολων αυτων (C1:C4) στο κελι C8

απο τις παραπανω πραξεις σαν αποτελεσμα να εφανιζεται μονο το τελικο αθροισμα στο αντιστιχο πεδιο sum και οχι ολες η πραξεις.

 

Ευχαριστω εκ των προτερων για τις οποιες απαντησεις.

test.zip

Δημοσ.

Αυτό που θέλεις να κάνεις είναι απλό και γίνεται χωρίς την χρήση vba. Γιατί θέλεις να χρησιμοποιήσεις vba?

 

Θα έλεγα να χρησιμοποιήσεις vba μόνο αν οι διαστάσεις του πίνακα αλλάζουν αλλά και πάλι ίσως να γινόταν χρησιμοποιώντας μόνο συναρτήσεις του excel.

 

Επειδή πάντα ένας από τους αριθμούς (π.χ. C6) παραμένει σταθερός στον πολλαπλασιασμό μπορείς να κάνεις παραγοντοποίηση και να τον βγάλεις έξω από την παρένθεση. Έτσι, μπορείς να χρησιμοποιήσεις την SUMPRODUCT συνάρτηση του excel. Ρίξε μια ματιά στο αρχείο που επισυνάπτω και κάνει αυτό που θέλεις με τους αριθμούς σου.

test.zip

Δημοσ.

Pagodas σε ευχαριστώ,

όπως το έχεις είναι σαφώς σωστό αλλά χρειάζομαι το παραπάνω σε κώδικα vba

διότι θα υπάρξουν και περαιτέρω παραμετροποιησεις που δεν είναι του παρόντος.

Αν δεν σου κάνει κόπο μπορείς να κάνεις το παράδειγμα σου σε vba να το χρησιμοποιήσω σαν macro.

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

κάθε φορά που εκτελείται κάποιο sql ερώτημα απο ενα vb script εξωτερικό και ανάλογα το αποτέλεσμα κάνει export

στον πίνακα που έβαλα προηγουμένως.

Ερώτηση:

Χρειάζεται να πάρουμε την τιμή του κάθε κελιού με το Range("κελί").Value ,διευκολύνει σε τίποτα αν γίνει το παράδειγμά σου σε vba;

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

Δημοσ.

Γειά σου,

 

Για να καταλάβω καλύτερα πώς το θέλεις θέλω να μου λύσεις κάποιες απορίες.

 

1) Οι διαστάσεις του πίνακα θα αλλάζουν κάθε φορά που λαβάνεις δεδομένα εξωτερικά;

2) Πώς ανανεώνεται ο πίνακάς σου με νέα δεδομένα; Από πού τα "τραβάει";

 

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

Περιμένω την απάντησή σου για να καταλάβω καλύτερα πώς ακριβώς το θέλεις.

Δημοσ.

προς το παρων οχι δεν θα αλλαζουν,ισως καποια στιγμη αργοτερα,

αν βεβαια δεν ειναι μεγαλος κοπος τοτε ισως να καναμε τον πινακα δυναμικο.

 

Οσο για το απο που θα τραβαει το δεδομενα,

οχι ηδη ενα script σε excel απο το οποιο με sql παιρνει καποια δεδομενα και στην συνεχεια τα εξαγει σε ενα προκαθορισμενο excel templatte.

Εγω τωρα θελω να προσθεσω αυτο το macro στο templatte ετσι ωστε καθε φορα που εξαγωνται και διαφορετικες τιμες να φορτωνονται στο templatte και το macro να αναλαμβανει

των υπολογισμο των τιμων.

 

Μπορουμε με καοποιο τροπο να κανουμε locked μονο τα πεδια των αποτελεσματων,δηλαδη εκει που ειναι η sumproduct

 

κατι σαν και αυτο

 

Cells.Locked = False

 

Range("C6:F6").Locked = True

 

 

λοιπον εφτιαξα το εξης με την δικια σου βοηθεια πριν,

μην σε αποσχολει που εχω καποια αλλα πεδια για επιλογες διοτι στον πινακα που εδωσα πριν

δεν χρησιμοποιω επικεφαλιδες και τα σχετικα και λειπουν μερικες ακομα στηλες.

Επισης θα ηθελα και παλι να σε ευχαριστησω προπαντων για τον χρονο που διαθετεις για την επιλυση

του προβληματος μου.

test.txt

Δημοσ.

Θα μπορούσες κάθε φορά που αλλάζουν τα δεδομένα και άρα τρέχεις το script σου να προσθέσεις:

 

Sheets("όνομα του sheet εδώ").calculate

 

αφήνοντας τις συναρτήσεις sumproduct όπως έχουν. βοηθάει αυτό καθόλου; Αλλιώς μάλλον πάμε στην λύση που έδωσες και εσύ με τα

 

range.formula=...

Δημοσ.

Ευχαριστω καταρχην για την απαντηση,

δυστηχως κατι δεν ειχα καταλαβει σωστα και το προβλημα ειναι το εξης,

τα αποτελσματα θα πρεπει να φαινονται σε εναν αλλο πινακα ιδιων διαστασεων για καθε κελι ξεχωριστα χωρις την τελικη προσθεση ολων αυτων

σε μια sum.

δηλαδη το sum πεδιο κατω δεν υπαρχει αλλα μολις φορτωνει το templatte με τις αντοιστιχες τιμες τοτε αρχιζει το macro

να διαβαζει το καθε κελι να κανει την πραξη και να το αποθηκευει την νεα τιμη στο καθε νεο κελι του νεου πινακα ξεχωριστα.

για παραδειγμα, στο κελι C1 του πινακα μου να διαβαζεται πρωτα η τιμη(το 10 στην περιπτωση μας) επειτα να γινεται ο πολαπλιασιασμος με της αντοιστιχες

δυναμεις " (10*1)*10 αντοιστιχα για το C2 (20*1)*8 να αποθηκευεται η τιμη παλι στο καθε αντιστοιχο πεδιο του ανττιστοιχου πινακα ξεχωριστα.

Θα σε παρακαλουσα αν εχεις λιγο ελευθερη ωρα και το παραπανω σου ακουγεται ευκολο να με βοηθησεις στον κωδικα.

Σε ευχαριστω εκ των προτερων.

Αρχειοθετημένο

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

  • Δημιουργία νέου...