Καλησπέρα στην παρέα
Ζαχαρία, στο αρχείο που επισυνάπτω προσπάθησα να δώσω μια λύση στο ζητούμενο με
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 μιας στήλης και σύρεται προς τα κάτω όσο χρειάζεται.
Όπως βλέπω, από τη δομή του φύλλου, κάθε υλικό (άρωμα) συμμετέχει σ’ ένα μόνο σετ.
Δηλαδή δεν αντιμετωπίζεται η περίπτωση, που νομίζω δεν αποκλείεται, να συμμετέχει σε περισσότερα σετ.
Θα μπορούσε να χρησιμοποιηθεί η συνάρτηση και σ’ αυτήν την περίπτωση με την προϋπόθεση οι ποσότητες των απλών υλικών στα άλλα σετ θα είναι μηδενικές.
Φιλικά/Γιώργος
ΥΓ Φίλε Θανάση καλωσόρισες. Είδα τη λύση σου, όταν ανέβαζα την απάντησή μου