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/4950-ypologismos-athroismatos.html)

ΔΗΜΗΤΡΙΟΣ 15-07-18 14:03

Υπολογισμός αθροίσματος
 
1 Συνημμένο(α)
Θα ήθελα αν είναι δυνατό στις υπόλοιπες στήλες B , C κτλ να εμφανίζονται τα αποτελέσματα όπως στην στήλη Α για τις τιμές του χ=2,3 ...100.
Ευχαριστώ πολύ !

Spirosgr 15-07-18 17:07

Καλησπέρα.
Αν κατάλαβα καλά,θέλουμε να υπολογίσουμε την απόλυτη τιμή |Χ-1|+|Χ-2|...|Χ-100|
όπου ο Χ θα παίρνει διαδοχικά τιμές 1,2,...100
και για κάθε μια από τις τιμές αυτές, θέλουμε το αποτέλεσμα σε στήλες
από την a=1 και δεξιά (a,b,c....) από το κελί a1,b1,c1... και κάτω.

Μπορείς να χρησιμοποιήσεις τον πιο κάτω κώδικα:
Κώδικας:

Sub ColumnFill_X()
    Dim x As Integer  'Ο x θα πάρει την τιμή της στήλης
    Dim irow As Integer    'Το irow θα πάρει την τιμή της γραμμής
    Dim iResult As Double  ' Είναι το αποτέλεσμα

    Application.ScreenUpdating = False

    For x = 1 To 100
        For irow = 1 To 100
            iResult = 0
            iResult = x - irow
            Sh1.Cells(irow, x).NumberFormat = "General"
            Sh1.Cells(irow, x).Value = Abs(iResult)
        Next irow
        Sh1.Cells(irow, x).FormulaR1C1 = "=SUM(R[-100]C:R[-1]C)"
    Next x
End Sub

Η γραμμή:
Sh1.Cells(irow, x).FormulaR1C1 = "=SUM(R[-100]C:R[-1]C)"
δίνει το άθροισμα στήλης και είναι προαιρετικό, αν θέλει να την εντάξει κανείς στην ρουτίνα.

Spirosgr 15-07-18 18:00

1 Συνημμένο(α)
Στο βιβλίο, η λύση με τον κώδικα και μια λύση με τύπους =row() και =column()

kapetang 15-07-18 18:56

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

Μια άλλη απλή πρόταση.

Έχω δημιουργήσει με τον παρακάτω κώδικα:
Κώδικας:

Public Function SUMAbs(x As Variant) As Long
    Dim i As Long, sum As Long
    For i = 1 To 100
        sum = sum + Abs(x - i)
    Next
    SUMAbs = sum
End Function

μια συνάρτηση χρήστη, την SUMAbs(x) .

Η συνάρτηση παίρνει ως όρισμα μία τιμή x (πχ 10) και επιστρέφει το άθροισμα των απόλυτων τιμών:

|x-1| + |x-2| + ...+ |x-100|

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

kapetang 15-07-18 19:27

1 Συνημμένο(α)
Στο συνημμένο έχω προσθέσει και μια απλή λύση με τη συνάρτηση SUMPRODUCT.

Επίσης και ένα διάγραμμα που δείχνει πως μεταβάλλεται το άθροισμα με το x

ΔΗΜΗΤΡΙΟΣ 15-07-18 19:31

Πολύ καλό και γρήγορο Γιωργο
Να είσαι καλά.
Σε ευχαριστώ !

kapetang 15-07-18 19:48

Δημήτρη, εκτός από την πρόταση του Σπύρου, υπάρχει και μία από μένα (Γιώργος).

Ελπίζω να τη δεις .....

Spirosgr 15-07-18 19:53

1 Συνημμένο(α)
1
Το φύλλο, είναι ένα κενό φύλλο, στο οποίο,
έχουμε απλά μετονομάσει το κωδικό του όνομα σε Sh1 (*βλέπε εικόνα).

Αν δεν θέλουμε να μετονομάσουμε (προσωπικά πάντα μετονομάζω) αλλάζουμε στον κώδικα,
όπου Sh1, το κωδικό όνομα του φύλλου, που θα εφαρμόζεται ο κώδικας.

Ακόμα, μπορούμε να αλλάξουμε σε ActiveSheet, αρκεί το φύλλο να είναι ενεργό.

2
Η συνάρτηση ABS(COLUMN()-ROW())
δίνει το =Abs() στην εκάστοτε στήλη - γραμμή που εφαρμόζεται.
Η = Column() αποδίδει την στήλη πχ ενός κελιού (παίρνει τιμή για τον Χ)
Η = Row() αποδίδει την γραμμή πχ ενός κελιού (παίρνει τιμή για το -1,-2...)

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

ΔΗΜΗΤΡΙΟΣ 15-07-18 21:27

και πάλι ευχαριστώ !

Spirosgr 15-07-18 21:30

Να 'σαι καλά, καλή συνέχεια.


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

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


Search Engine Optimization by vBSEO 3.3.2