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/5202-athroismata.html)

ΔΗΜΗΤΡΙΟΣ 04-04-19 20:15

Αθροίσματα
 
1 Συνημμένο(α)
Πως μπορούμε να υπολογίσουμε με VBA το άθροισμα των κελιών που έχουν συγκεκριμμένη θέση όπως φαίνεται στο αρχείο που σας επισυναπτω;
Ευχαριστώ πολύ!!

kapetang 05-04-19 13:13

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

Δημήτρη, δες το συνημμένο.

Αν κατάλαβα καλά:

1) Τα δεδομένα βρίσκονται σε γραμμή ή στήλη.

2) Στο άθροισμα περιλαμβάνεται κάθε κελί που προκύπτει από τη μετατόπιση κατά σταθερή τιμή n, του προηγούμενου.

Με βάση τα παραπάνω δημιούργησα τη συνάρτηση SUMperN()

ΔΗΜΗΤΡΙΟΣ 05-04-19 14:00

Ευχαριστώ πολύ Γιώργο ,είναι αυτό που ήθελα.
Να είσαι καλά !!

kapetang 05-04-19 15:34

Επίσης Δημήτρη.
Καλή συνέχεια

Spirosgr 05-04-19 17:05

1 Συνημμένο(α)
Καλησπέρα
Η αλήθεια είναι, ότι το πρώτο αρχείο του Δημήτρη με το ζητούμενο, με μπέρδεψε λιγάκι...

Στην πρώτη γραμμή με τα κίτρινα κελιά, ενώ το βήμα είναι σταθερό,
ξαφνικά ένα κελί πριν το τέλος αλλάζει...

Σκέφτηκα τι θα μπορούσε να είναι το ερώτημα;
«...Έχουμε ένα σταθερό βήμα κι αν συμπέσει με το τελευταίο κελί της περιοχής,
παίρνει το προηγούμενο...»

Θα μπορούσε...αλλά δεν μου φάνηκε λογικό.
Τουλάχιστον για κάποια εφαρμογή (για ένα challenge είναι πολύ καλό)

Ασχολήθηκα λοιπόν με...τα χρώματα.
Εδώ πάλι ενώ έχουμε καθαρό κίτρινο, δεν έχουμε καθαρό πράσινο...

Στο βιβλίο που ακολουθεί
υπάρχουν κάποια πράγματα που μπορούμε να κάνουμε.

Μετά είδα την UDF του Γιώργου, την οποία βελτίωσα με μια optional παράμετρο.

Αν δεν την ορίσουμε, το άθροισμα, ξεκινάει από το πρώτο κελί της περιοχής.
Αν την ορίσουμε, το άθροισμα, ξεκινάει από το κελί που ορίσαμε.

Πιστεύω θα είναι χρήσιμα...

kapetang 05-04-19 19:42

Καλησπέρα

Συμφωνώ με τις επεκτάσεις του Σπύρου και προτείνω:

1) Στις συναρτήσεις SumEveryNth() καιSUMperN() η γραμμή κώδικα (δήλωση):

Dim c As Range, sum As Long, i As Long

Να γίνει: Dim sum As Double, i As Long

2) Η διαδικασία (Sub) SumByColor να γίνει συνάρτηση (Function) με 2 ορίσματα:
  • rngSum = η περιοχή που θα αθροιστεί
  • rngColor = η περιοχή με το χρώμα αθροίσματος.

3) Η διαδικασία (Sub) SumColoredCells να γίνει συνάρτηση με ένα όρισμα:
  • rngSum = η περιοχή που θα αθροιστεί

Με τις παραπάνω προτάσεις θα διορθωθεί μια αβλεψία μου κατά τη δήλωση των μεταβλητών και θα αποτραπεί η εμφάνιση των InputBox, που τα θεωρώ "μπέρδεμα".

ΔΗΜΗΤΡΙΟΣ 05-04-19 20:10

Σας ευχαριστώ πολύ !!


Η ώρα είναι 00:49.

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


Search Engine Optimization by vBSEO 3.3.2