Θέμα: Γενικά Άθροίσματα

Εμφάνιση ενός μόνο μηνύματος
  #6  
Παλιά 14-10-11, 20:23
kapetang Ο χρήστης kapetang δεν είναι συνδεδεμένος
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

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

Ζαχαρία, στο αρχείο που επισυνάπτω προσπάθησα να δώσω μια λύση στο ζητούμενο με VBA.
Συγκεκριμένα δημιούργησα τη συνάρτηση «AddSet» η οποία στα τεμάχια ενός υλικού προσθέτει και τα τεμάχια από το σετ υλικών στο οποίο συμμετέχει.

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

Ο κώδικας της συνάρτησης δίνεται παρακάτω:
Κώδικας:
Public Function AddSet(rngSET As Range, rngSingle As Range)
    Dim startV As Long
    AddSet = ""
    If Not IsEmpty(rngSingle) Then
        startV = rngSingle
        Do Until IsEmpty(rngSingle)
            Set rngSingle = rngSingle.Offset(-1, 0)
        Loop
        AddSet = startV + Cells(rngSingle.Row, rngSET.Column)
    End If
End Function
Όπως φαίνεται η συνάρτηση έχει δύο ορίσματα.
Το πρώτο «rngSET» είναι η στήλη με τις ποσότητες των σετ. Στη συγκεκριμένη περίπτωση έχει τιμή: C:C.
Το δεύτερο όρισμα «rngSingle» είναι το κελί στην ίδια γραμμή με τον τύπο (συνάρτηση), που περιέχει την ποσότητα των απλών υλικών.

Ο τύπος (συνάρτηση) αντιγράφεται στην γραμμή 3 μιας στήλης και σύρεται προς τα κάτω όσο χρειάζεται.

Όπως βλέπω, από τη δομή του φύλλου, κάθε υλικό (άρωμα) συμμετέχει σ’ ένα μόνο σετ.
Δηλαδή δεν αντιμετωπίζεται η περίπτωση, που νομίζω δεν αποκλείεται, να συμμετέχει σε περισσότερα σετ.
Θα μπορούσε να χρησιμοποιηθεί η συνάρτηση και σ’ αυτήν την περίπτωση με την προϋπόθεση οι ποσότητες των απλών υλικών στα άλλα σετ θα είναι μηδενικές.

Φιλικά/Γιώργος
ΥΓ Φίλε Θανάση καλωσόρισες. Είδα τη λύση σου, όταν ανέβαζα την απάντησή μου
Συνημμένα Αρχεία
Τύπος Αρχείου: xls collection3.xls (66,0 KB, 12 εμφανίσεις)
Απάντηση με παράθεση