![]() |
Συνάρτηση με πολλαπλά IF 1 Συνημμένο(α) Καλησπέρα, Επειδή έχω κολλήσει … θα ήθελα την όπως πάντα πολύτιμη βοήθειά σας , Λοιπόν τα ζητούμενα είναι : Η τιμή στην στήλη «Ι» (που εξαρτάται – διαμορφώνεται από τις τιμές των “D” “G”) θα πρέπει να είναι : 1. Αν η τιμή στο ανάλογο κελί της “D” πχ “D2” μεγαλύτερη από 70 τότε στο “I2” θα επιστρέφει την τιμή του “D2” ενώ αν είναι μικρότερη να προσθέτει ένα 5% στην τιμή του “D2” με την προϋπόθεση όμως ότι το “G2” είναι πάνω από 11% 2. Αν η τιμή πχ στο “G2” είναι 10% τότε να προσθέτει ένα επιπλέον 5% ανεξάρτητα της τιμής στο “D2” 3. Αν η τιμή πχ στο “G2” είναι 0% τότε να προσθέτει ένα επιπλέον 10% ανεξάρτητα της τιμής στο “D2” Χρησιμοποιώ το Ελληνικό Excel 2007 σε Win10 Για κάθε πληροφορία ή διευκρίνιση είμαι στην διάθεσή σας. Ευχαριστώ, Γιώργος |
Στο κελί I2 γράψε την παρακάτω συνάρτηση: =IF($G2=0;$D2*1,1;IF($G2=0,1;$D2*1,05;IF($D2>70;$D 2;IF($G2>0,11;$D2*1,05)))) η οποία κάνει τα παρακάτω: Αν G2=0%, τότε αυξάνει το D2 κατά 10%, αλλιώς αν G2=10%, τότε αυξάνει το D2 κατά 5%, αλλιώς αν D2>70, τότε επιστρέφει την τιμή του D2, αλλιώς αν G2>11%, τότε αυξάνει το D2 κατά 5%. Σύμφωνα με τα κριτήρια που θέτεις, το αποτέλεσμα είναι FALSE στα άλλα δύο κελιά της στήλης I, γιατί το ποσοστό στη στήλη G προέρχεται από τύπο και δεν είναι ακριβώς 0% ή 10%. Οπότε θα πρέπει να δεις το εναλλακτικό αποτέλεσμα σ' αυτήν την περίπτωση. |
1 Συνημμένο(α) Ευχαριστώ ChrisGT7 για την άμεση απάντηση, :thanks: Εφαρμόζοντας την συνάρτηση (την διόρθωσα λίγο ως προς τα ποσοστά και ένα D2 που είχε ένα κενό μεταξύ του D και του 2) και δουλεύει σωστά όπως θα δεις και στο επισυναπτόμενο αρχείο στις γραμμές από 7 έως 17. Όταν όμως το εφάρμοσα στις γραμμές 20-22 δούλεψε μόνο στην 20 ενώ στις 21 & 22 επιστρέφει FALSE … Θα μπορούσες να ρίξεις μια ματιά ??? Γιώργος |
Επιστρέψει FALSE για τον ίδιο λόγο, όπως και προηγουμένως: Το 0% και 10% προέρχονται από τύπο και "εμφανισιακά" μπορεί να φαίνονται ως 0 και 10 αλλά στην πραγματικότητα είναι οι αριθμοί -0,110028653295124% και 10,0137123745819% αντίστοιχα, οπότε ο τύπος δεν μπορεί να τα πιάσει σύμφωνα με τα κριτήρια που του δώσαμε. Στις γραμμές 7-17 έχεις βάλεις τα ποσοστά με το χέρι, οπότε δεν υπάρχει πρόβλημα. Θα σου πρότεινα τη συνάρτηση ROUND() σε αποτελέσματα που επιστρέφουν τόσα πολλά δεκαδικά. Δηλαδή: =ROUND(1-(F21/E21);2) και =ROUND(1-(F22/E22);2) αντίστοιχα στα κελιά G21 και G22. |
Και πάλι ευχαριστώ, Το δοκιμάζω και επιστρέφω ... Γιώργος |
Διορθώθηκε !!! :yahoo: Ευχαριστώ πολύ ChrisGT7 για την άμεση ανταπόκριση :thanks::thanks::thanks: Γιώργος |
Καλημέρα. Πριν δούμε κάποιο τύπο, θα πρέπει να επανεξετάσεις τα όρια σου, γιατί έχουν «κενά».. 1 «Αν η τιμή στο ανάλογο κελί της “D” πχ “D2” μεγαλύτερη από 70 τότε στο “I2” θα επιστρέφει την τιμή του “D2” ενώ αν είναι μικρότερη ...» Αν είναι =70; τι... «με την προϋπόθεση όμως ότι το “G2” είναι πάνω από 11%...» Αν είναι =11%; τι... 2 «Αν η τιμή πχ στο “G2” είναι 10% τότε να προσθέτει ένα ...» Αν είναι μεταξύ 10% και 11%; τι... 3 «Αν η τιμή πχ στο “G2” είναι 0% τότε να προσθέτει...» Αν είναι μεταξύ 0% και 10%; τι... |
Καλημέρα Σπύρο, Ευχαριστώ για τις εύστοχες επισημάνσεις - παρατηρήσεις σου , θα επανέλθω σε λίγο με περισσότερες λεπτομέρειες . Γιώργος |
1 Συνημμένο(α) Παράθεση:
Λοιπόν , Θέλουμε η τιμή στην στήλη “I” να διαμορφώνεται από την τιμή της στήλης “D” σε συνάρτηση με την τιμή στην στήλη “G” Παραδοχή πρώτη , σε όλες τις τιμές της στήλης “D” που είναι μικρότερες και ίσες με 69,99 να προσθέτει ένα 5% στην στήλη ”I” (άλλως δηλαδή πάνω από 69,99 στην “D”) να επιστρέφει την τιμή της στήλης “D” Παραδοχή δεύτερη , αν η τιμή στην στήλη “G” είναι ίση με 0% να προσθέτει επιπλέον ένα 10% (δηλαδή 5% από την πρώτη παραδοχή + 10% = 15% για ποσά μέχρι 69,99 και μόνο 10% για ποσά πάνω από 69,99) της τιμής στην στήλη ”D” Παραδοχή τρίτη , αν η τιμή στην στήλη “G” είναι ίση με 10% να προσθέτει επιπλέον ένα 5% (δηλαδή 5% από την πρώτη παραδοχή + 5% = 10% για ποσά μέχρι 69,99 και 5% για ποσά πάνω από 69,99) της τιμής στην στήλη ”D” Ενδιάμεσες τιμές της στήλης ”G” εκτός από τις : 0%, 10%, 25% προς το παρόν δεν υπάρχουν , οπότε το πάνω από 10% θα πρέπει να συμπεριφέρεται όπως και το 25% … Ο γενικός κανόνας είναι : α) ότι είναι ίσο και μικρότερο από 69,99 στην “D” επιβαρύνεται στην “I” με ένα 5% , ότι είναι ίσο και μεγαλύτερο από 70,00 στην “D” μεταφέρεται στην “I” ως έχει, β) αν η τιμή στο “G” είναι 0% τότε όλα έχουν (επιπλέον της προηγούμενης που περιγράφετε στην α περίπτωση) επιβάρυνση + 10% και γ) αν η τιμή στο “G” είναι 10% τότε όλα έχουν (επιπλέον της προηγούμενης που περιγράφετε στην α περίπτωση) επιβάρυνση + 5% Ελπίζω ότι τα έχω γράψει - αποτυπώσει σωστά , αν όχι πάλι εδώ είμαι … Από την προηγούμενη υλοποίηση, όπως θα δεις και στο συνημμένο αρχείο, κοιτάζοντας καλύτερα βλέπω ότι υπάρχει πρόβλημα στις γραμμές 7 & 8 … Ευχαριστώ για την βοήθεια, Γιώργος :wink: |
Δοκίμασε την παρακάτω συνάρτηση στο I2: =IF($G2=0;IF($D2<=69,99;$D2*1,05;$D2)+$D2*0,1;IF($ G2=0,1;IF($D2<=69,99;$D2*1,05;$D2)+$D2*0,05;IF($D2 <=69,99;$D2*1,05;$D2))) Αν κατάλαβα καλά από το παράδειγμα στις γραμμές 7-17 και λέγοντας "οπότε το πάνω από 10% θα πρέπει να συμπεριφέρεται όπως και το 25% …", θεώρησα ότι μόνο οι αριθμοί που είναι μικρότεροι ή ίσοι του 69,99 θα πάρουν μια επιβάρυνση 5%. Ελπίζω να το "πιάσαμε" αυτή τη φορά. :) |
Καλησπέρα Χρήστο, Πράγματι το πιάσαμε !!!! :yahoo: Θα το δεις και στο συνημμένο αρχείο ! Σε ευχαριστώ πολύ και πάλι, :thanks: Γιώργος |
1 Συνημμένο(α) Αυτό είναι το νέο τελικό αρχείο !!! Το κανονικό έχει πάνω από 5.000 εγγραφές ... Ευχαριστώ και πάλι για την πολύτιμη βοήθειά σας. Γιώργος :thanks: |
Καλημέρα Έχω μια ερώτηση-ένσταση 50,00..........0%..........57,50 €..........5%+10% Σε μια περίπτωση σαν κι αυτή, με βάση τον τρόπο που το θέτεις (5+10) το αποτέλεσμα δεν είναι σωστό. Είναι 5% επί του 50 + άλλο ένα 10% επί του αποτελέσματος = 57,75 Το 57,50 είναι αποτέλεσμα του 50 + 15% |
Καλημέρα Σπύρο, Το αποτέλεσμα είναι σωστό 57,50, διότι όλα τα ποσοστά υπολογίζονται επί του αρχικού ποσού δηλαδή στο παράδειγμα 50,00 € ……. 0% τότε έχουμε 50,00 * 5% (50,00*5% = 2,50) + 10% (50,00*10%=5,00) = 50,00 + (2,50+5,00) = 57,50 Ίσως δεν το είχα θέσει σωστά από την αρχή … Ευχαριστώ πολύ και πάλι :001_smile: |
1 Συνημμένο(α) Καλημέρα σας και καλώς σας βρήκα. Για τη περίπτωση των πολλαπλών IF, έχω την επισυναπτόμενη απλή λίστα όπου στο φύλλο 2 επιλέγω από τη λίστα το όνομα του εργαζομένου και μου φέρνει αυτόματα το ποσό του ημερομησθίου. Η συγκεκριμένη περίπτωση είναι εύκολη με δεδομένο ότι ο αριθμός των εργαζομένων είναι μικρός, οπότε και η σύνταξη του IF τύπου εύκολος. Στη περίπτωση όμως που οι εργαζόμενοι είναι εκατοντάδες και η λίστα με τα δεδομένα στο φύλλο 1 είναι μακρυά, αυτό σημαίνει ότι θα πρέπει να βάλω στο τύπο μου ανάλογα εκατοντάδες IF περιπτώσεις ή υπάρχει κάποιος τύπος που μπορεί να κάνει αναζήτηση και να φέρει το ανάλογο ποσό; |
Ανδρέα καλώς όρισες στο ms-office.gr Καμία σχέση η =IF() Εδώ δουλεύεις με =INDEX() & =MATCH() |
Σε ευχαριστώ για το καλωσόρισμα και για την απάντηση. Τελικά νομίζω ότι τη πιο απλή και όπως δείχνει καλή και αξιόπιστη λύση για τη δικιά μου περίπτωση τη βρήκα με την =VLOOKUP(). |
Ναι οκ, σωστό. Αλλά έχουμε πεί πολλές φορές στο forum, σχετικά με τα «ελαττώματα» της vlookup... |
Η αλήθεια είναι ότι ως νέος εδώ, δεν έχω προλάβει να δει τα σχετικά σχόλια που αναφέρεσαι. Σε ευχαριστώ πάντως, θα κάνω μια αναζήτηση να δω ποια είναι αυτά. |
| Η ώρα είναι 09:52. |
Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.