Εναλλακτικές μορφές της συνάρτησης IF (συνέχεια)

Σε προηγούμενο σημείωμα για την συνάρτηση IF είχα υποσχεθεί  άλλη μία μέθοδο εναλλακτικής μορφής της συνάρτησης IF. Να ένα απλό παράδειγμα:
Το κελί Α5 παίρνει διάφορες τιμές a,b,c,d,e,f,…. και η συνάρτησή σας, θέλετε να επιστρέφει aa,bb,cc,dd,ee,ff,….αντίστοιχα.
Διαλέξτε στο φύλλο μία κενή στήλη, ας πούμε την G
Στο κελί G1 γράψτε τον τύπο: =IF(A5="a";"aa";G2)
Στο κελί G2 γράψτε τον τύπο: =IF(A5="b";"bb";G3)
Στο κελί G3 γράψτε τον τύπο: =IF(A5="c";"cc";G4)
Στο κελί G4 γράψτε τον τύπο: =IF(A5="d";"dd";G5)
Στο κελί G5 γράψτε τον τύπο: =IF(A5="e";"ee";G6)
Στο κελί G6 γράψτε τον τύπο: =IF(A5="f";"ff";G7)
...............................................
Και μπορείτε να συνεχίσετε έτσι για όσο θέλετε. Στο κελί που θέλετε να πάρετε την επιστροφή της συνάρτησης (ας πούμε το Β5) γράψτε απλά τον τύπο =G1. Τίποτα άλλο. Καθώς το κελί Α5 παίρνει τιμές a, b, c,d,e,… το κελί Β5 (δηλαδή ο τύπος =G1) θα επιστρέψει aa,bb,cc,dd,ee,…αντίστοιχα. Τη στήλη G, στα κελιά της οποίας γίνεται όλη η υπολογιστική δουλειά μπορείτε να την κρύψετε, μάλλον οι  επί μέρους υπολογισμοί σας είναι άχρηστοι.
Κάθε κελί της G συντάσσεται χωριστά, στη μορφή:

IF(logical_test;value_if_true; ένα_άλλο_κελί)

Αν το logical_test κάποιου κελιού της στήλης G επαληθευθεί (πάρει τιμή TRUE), τότε επιστρέφει το δικό του value_if_true και την ίδια τιμή value_if_true μεταβιβάζει για να επιστρέψουν και τα προηγούμενα κελιά, άρα και το G1. Αν το logical_test δεν επαληθευθεί (πάρει τιμή FALSE), τότε η συνάρτηση μεταβιβάζει την έρευνα σε ένα άλλο κελί και εκείνο στο επόμενο και ούτω καθεξής, ώσπου να βρεθεί ένα logical_test που να επαληθευθεί.
Αν κανένα logical_test δεν επαληθευθεί, τότε θα επιστραφεί η τιμή του κελιού που παραπέμπει η τελευταία IF. Στο παραπάνω παράδειγμα, η τιμή του κελιού G7. (Αν  το κελί G7 είναι κενό θα επιστραφεί μηδέν)
Αν επαληθευθούν περισσότερα από ένα logical_test τότε η μέθοδος θα επιστέψει το value_if_true  του πρώτου logical_test που θα επαληθευθεί.
Η λογική αυτής της μεθόδου είναι ότι, αντί να έχω πολλά (φωλιασμένα ή όχι) IF σε ένα και μόνο τύπο, γράφω κάθε περίπτωση σε κάθε κελί χωριστά.
Τα πλεονεκτήματα της μεθόδου:
Μπορεί να περιλαμβάνει χιλιάδες (κυριολεκτικά) περιπτώσεις IF.
Συντάσσεται και διορθώνεται πολύ εύκολα.
Είναι εύκολα κατανοητή.
Δεν έχει κανένα περιορισμό στις επιστρεφόμενες τιμές οι οποίες μπορεί να είναι: αριθμοί, ημερομηνίες,     συναρτήσεις, κείμενο, λογικές τιμές, σφάλματα. Το παρακάτω παράδειγμα δουλεύει χωρίς κανένα πρόβλημα ακόμα και στην περίπτωση του σφάλματος 5/0 (#ΔΙΑΙΡ/0!).
Κελί G1: =IF(A5="a";"aaa";G2)
Κελί G2: =IF(A5="b";222;G3)
Κελί G3: =IF(A5="c";TODAY();G4)
Κελί G4: =IF(A5="d";TRUE;G5)
Κελί G5: =IF(A5="e";5/0;G6)
Κελί G6: =IF(A5="f";SUM(S1:S7);G7)
Κελί G7: ΕΚΤΟΣ ΠΕΡΙΠΤΩΣΕΩΝ
Γράψτε τις επί μέρους  συναρτήσεις IF οπού σας βολεύει στο φύλλο, σε στήλη ή γραμμή. Μπορείτε να τις γράψετε και σε ένα διαφορετικό φύλλο το οποίο μπορεί να είναι κρυφό ή πολύ κρυφό. Δέστε το παράδειγμα 3 στο excel βιβλίο  dynamicIF
Η μέθοδος αυτή προσφέρετε για αρκετά πολύπλοκες συναρτήσεις, όταν οι περιπτώσεις IF είναι πολλές, όταν το logical_test είναι πολυσύνθετο (και δεν εξαρτάται μόνο από την τιμή ενός κελιού όπως στα παραδείγματα) ή σε συνδυασμό αυτών. Στις περιπτώσεις αυτές, η τμηματική γραφή της συνάρτησης θα βοηθήσει όσους έχουν πρόσβαση στο βιβλίο, να κατανοήσουν την λογική του τύπου και εύκολα να κάνουν αλλαγές αν χρειάζεται. Αντίθετα πάλι, αν δεν θέλετε να έχουν οι άλλοι χρήστες πρόσβαση στην συνάρτησή σας, μπορείτε να την συντάξετε σε μία στήλη ενός φύλλου που είναι κρυφό ή πολύ κρυφό. (Για τα κρυφά και πολύ κρυφά φύλλα είπαμε στο προηγούμενο σημείωμα).
Μια παραλλαγή της μεθόδου:
Αντί να γράψετε τα τμήματα της συνάρτησης σε (διαδοχικά) κελιά, θα τα γράψετε σε  καθορισμένα ονόματα (names). Για το πρώτο από τα παραπάνω παραδείγματα καθορίστε τα παρακάτω ονόματα:
name1:  =IF(φύλλο1!$A$5="a";"aa";name2)
name2:  =IF(φύλλο1!$A$5="b";"bb";name3)
name3:  =IF(φύλλο1!$A$5="c";"cc";name4)
name4:  =IF(φύλλο1!$A$5="d";"dd";name5)
name5:  =IF(φύλλο1!$A$5="e";"ee";name6)
name6:  =IF(φύλλο1!$A$5="f";"ff";name7)
......................................
namex:  ="εκτός περιπτώσεων"
Η σύνταξη των ονομάτων είναι εντελώς παρόμοια με αυτή των κελιών. Δημιουργούμε μια  διαδοχή (αλυσίδα) ονομάτων. Κάθε επιμέρους συνάρτηση-όνομα ελέγχει το δικό της logical_test, αν το βρει TRUE, επιστρέφει το δικό της value_if_true και την ίδιο value_if_true επιστρέφουν και τα προηγούμενα ονόματα της αλυσίδας και τελικά και το name1. (Έτσι στο κελί που θέλουμε να έχουμε την τελική επιστροφή της συνάρτησης εισάγουμε =name1).  Αν το βρει FALSE μεταβιβάζει τον έλεγχο στο επόμενο όνομα έως το τέλος. Όλα τα παραπάνω παραδείγματα (και ένα πιο σύνθετο) μπορείτε να τα δείτε στο excel βιβλίο dynamicIF
This entry was posted in excel, Συναρτήσεις φύλλου and tagged , , , , . Bookmark the permalink.