Forum

Forum (https://www.ms-office.gr/forum/)
-   Excel - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/)
-   -   Σύγκριση πεδίων από ξεχωριστά φύλλα δεδομένων. (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/1069-sigkrisi-pedion-apo-ksexorista-filla-dedomenon.html)

ajulax 06-04-11 14:37

Σύγκριση πεδίων από ξεχωριστά φύλλα δεδομένων.
 
Χαιρετώ την κοινότητα.
Προσπαθώ να φτιάξω macros (λίγο σύνθετο) η οποία θα λύνει το εξής πρόβλημα:
Στο πρώτο φύλλο δεδομένων, όπου το φύλλο εργασιών αυτών περιέχει 6 στήλες. Η στήλη Α έχει τον κωδικό του πελάτη, η στήλη Β έχει το ονοματεπώνυμο του πελάτη, η στήλη C έχει το προϊόν που αγόρασε ο πελάτης, η στήλη D έχει την τιμή του προϊόντος με την καθαρή αξία, η στήλη Ε έχει την τιμή του Φ.Π.Α και η στήλη F έχει την τελική τιμή.
Στο δεύτερο φύλλο υπάρχουν τα δεδομένα του πελάτη (κωδικός πελάτη, τηλ, ΑΦΜ κ.τ.λ) και μία στήλη F με το συνολικό καθαρό ποσό των προϊόντων ανα πελάτη (δηλ. αν έχει αγοράσει ο πελάτης ένα αντικείμενο με 5 euro και ένα αντικείμενο με 10 euro, η στήλη F πρέπει να περιέχει τον αριθμό 15 (το άθροισμα 5 + 10).
Το πρόβλημα είναι ότι δεν γνωρίζω πως (καθώς είμαι πολύ καινούριος στην VB) να λαμβάνω δεδομένα από δύο διαφορετικά Φύλλα εργασιών προκειμένου να δουλέψω με τα δεδομένα αυτά.
Ευχαριστώ εκ των προτέρων

ajulax 07-04-11 10:52

Δημιούργησα το εξής script, αλλά έχει γίνει κάποιο σφάλμα.

Sub sum_pelatis()
On Error GoTo errorMsg
plithosGramon1 = InputBox("Dose to plithos ton paragelion")
plithosGramon2 = InputBox("Dose to plithos ton pelaton")

Set Sht2 = Worksheets("Pelates")
Set Sht1 = Worksheets("paragelies")


For k = 1 To plithosGramon2

kodikosPelaton1_Met = Sht2.C & k
Range(kodikosPelaton1_Met).Select
kodikosPelaton1_Timi = ActiveCell.FormulaR1C1

onomateponimo_Met = Sht2.H & k
Range(onomateponimo_Met).Select
onomateponimo_Timi = ActiveCell.FormulaR1C1

paratirisis_Met = Sh2.I & k
Range(paratirisis_Met).Select
paratirisis_Timi = ActiveCell.FormulaR1C1

For G = 1 To pilthosGramon1

kodikosPelaton2_Met = Sh1 & G
Range(kodikosPelaton2_Met).Select
kodikosPelaton2_Timi = ActiveCell.FormulaR1C1

If (kodikosPelaton1_Timi = kodikosPelaton2_Timi) Then
Katharo_Met = Sh1.J & G
Range(Katharo_Met).Select
Katharo_Timi = ActiveCell.FormulaR1C1
SumKatharo = SumKatharo + Katharo_Timi
End If
Next G
ActiveCell.Sh2.J& k = SumKatharo

Next k
errorMsg:
MsgBox Err.Description, vbOKOnly + vbCritical, "Error"
End Sub

Tasos 07-04-11 11:21

Καλημέρα Άρη και καλωσόρισες στο φόρουμ!

Επειδή ο κώδικας που δημοσίευσες δεν έχει κάποιο συντακτικό σφάλμα (κάποιες άλλες παραλείψεις υπάρχουν), θα βοηθούσε αν ανέβαζες ένα δείγμα του αρχείου σου όπου θα περιγράφεις το ζητούμενο σου και κατ' επέκταση να δούμε κι εμείς που, σε ποιο σημείο του προγράμματος εμφανίζεται το σφάλμα.

Περιμένουμε νέα σου

Φιλικά

Τάσος

ajulax 07-04-11 15:09

Φίλε Τάσο
Αρχικά ευχαριστώ. Tο φύλλο excel βρίσκεται στο http://www.isweb.gr/test.xlsx

Tasos 07-04-11 17:05

Καλησπέρα!

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

Στις παραδειγματικές αυτές εγγραφές εμφανίζεις όμως και άλλες στήλες.

Πες μας: Τι θα γίνει αν ο πελάτης εχει αγοράσει 2 η περισσοτερα διαφορετικά προιόντα;
Πώς και που θα εμφανίζονται;

Μήπως ένας συγκεντρωτικός πίνακας έλυνε το πρόβλημα σου;

Περιμένουμε νέα σου.

Τάσος

ajulax 08-04-11 09:44

Καλημέρα!
Τάσο, δεν με ενδιαφέρει στην προκειμένη περίπτωση ποια και πόσα διαφορετικά προϊόντα θα αγοράσει ο πελάτης, αυτό που θα πρέπει να εμφανίζει στo φύλλο Pelates, στην στήλη ‘ΣΥΝΟΛΟ ΚΑΘΑΡΗΣ ΑΞΙΑΣ ΤΟΥ ΚΆΘΕ ΚΩΔ.ΠΕΛΑΤΗ’ (στήλη J) είναι το συνολικό ποσό που έδωσε ο πελάτης, για το σύνολο των προϊόντων που παρέλαβε.

Ουσιαστικά το φύλλο Paragelies είναι οι κινήσεις και χαρακτηριστικά των αντικειμένων που έχουν παραδοθεί στους πελάτες, το φύλλο Pelates έχω όλα τα στοιχεία των πελατών καθώς και τα οικονομικά στοιχεία.

Αυτό που θα ήθελα να κάνει το script είναι να σαρώνει το φύλλο Paragelies και να καταχωρεί στο φύλλο Pelates το συνολικό ποσό παραγγελιών του κάθε πελάτη.

Έχεις αναφέρει κάτι σχετικά με τον συγκεντρωτικό πίνακα , θα το κοιτάξω και θα σου πω (καθώς πρώτη φορά τον συναντώ)

Ευχαριστώ

Tasos 08-04-11 10:56

1 Συνημμένο(α)
Καλημέρα Άρη!
Τις περισσότερες φορές, δεν χρειάζεται προγραμματισμός για να πάρεις κάποια συγκεντρωτικά στοιχεία από την Excel.

Το ζητούμενο σου καλύπτεται με τη συνάρτηση SUMIF() (Κανε κλικ εδώ για περισσότερες λεπτομέρειες)
που όπως μας προδιαθέτει και το όνομα, αθροίζει τιμές κάτω από συγκεκριμένους όρους τους οποίους πρέπει να ορίσει ο χρήστης μέσα στη συνάρτηση.

Πιο αναλυτικά: =SUMIF(Στήλη_αναζήτησης;Κριτήρια_Αναζήτησης;Στήλη_Προς_Άθροισμα)

Παράδειγμα:
Έστω ότι οι πρωταγωνίστριες στήλες στο φύλλο παραγγελιών (όνομα φύλλου = Orders) είναι:
  • Στήλη B = Κωδικός Πελάτη
  • Στήλη E = Οι τελική τιμή της παραγγελίας

Στο φύλλο που θα εμφανίζονται τα σύνολα αγορών ανά πελάτη στην επιθυμητή στήλη βάζουμε τον τύπο:

=SUMIF(Orders!B:B;A2;Orders!E:E)

όπου
A2 = ο Κωδικός Πελάτη στο φύλλο με τα σύνολα αγορών ανά πελάτη.

Δες το και στο επισυναπτόμενο παράδειγμα παρακάτω.

Καλή συνέχεια!

Φιλικά

Τάσος

ajulax 08-04-11 13:04

Τάσο μου έλυσες τα χέρια !!!! Την συνάρτηση sumif την ήξερα αλλά δεν ήξερα ότι μπορείς να διαβάζει από γειτονικά φύλλα.
Όπως και να έχει το πράγμα ευχαριστώ πολύ

PS: Μήπως γνωρίζεις αν γίνεται, οι συναρτήσεις του excel να χρησιμοποιηθούν σε macros ; Ξέρεις κανένα καλό tutorial για macros;

Tasos 08-04-11 20:39

Καλησπέρα Άρη!
Χαίρομαι που βοηθήθηκες!
Τις ενσωματωμένες συναρτήσεις της Excel (σχεδόν όλες) μπορούμε να τις καλέσουμε χρησιμοποιώντας το αντικείμενο WorksheetFunction

Για παράδειγμα : MyValue = Application.WorksheetFunction.Min(myRange).

Όσο για Tutorials, υπάρχουν πάρα πολλά στο Internet (ΥουTube κτλ.) πού απευθύνονται κυρίως σε αρχάριους.

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

Να θυμάσαι:
  • Την πολύ καλή βοήθεια της Excel και της VBA που σου παρέχεται με ένα απλό πάτημα του πλήκτρου F1.
  • Τον Object Explorer στον VBE (F2) όπου θα μπορείς να έχεις μια πληρέστερη εικόνα για κάποιο αντικείμενο.
Τέλος, το φόρουμ Θα σου λύσει οποιαδήποτε απορία πάνω στην Excel ή στη VBA.

Καλή συνέχεια!

Τάσος


Η ώρα είναι 14:38.

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


Search Engine Optimization by vBSEO 3.3.2