יום שבת, 17 ביוני 2017

איך עוקפים NESTED IF באקסל - בעזרת CHOOSE



Bypassing Excel’s Nested IF with the
CHOOSE Function

                                                                                                         

השנה מתקרבת לסיומה ואנו רוצים לתגמל את העובדים שלנו בבונוס מתאים:
העובדים מתוגמלים לפי דרוג משרה (מ-1 עד 5)



בעמודה C - אנו רוצים למצוא את הבונוס המתאים לעובד, לפי דרוג המשרה, כדלקמן:
         
          דרוג 1 - לא זכאי לבונוס
          דרוג 2 - זכאי לבונוס בסך 100 ש"ח
         דרוג 3 - זכאי לבונוס בסך 500 ש"ח
         דרוג 4 - זכאי לבונוס בסך 1000 ש"ח
          דרוג 5 - זכאי לבונוס בסך 1000 ש"ח
                                                                  
          פתרון מקובל בבעיות כאלה הוא השמוש ב- Nested IF או כמו שהוא קרוי בעברית  IF מקונן:


הנוסחה (בתא C2) "שולפת"  מטבלת הפרמטרים (E3:F7) את סכום הבונוס המתאים לדרוג המשרה (בתא B2):
         


לאחר ההקלדה (בתא C2), נקליק קליק כפול בפינה הימנית התחתונה
של התא:

והתוצאה:
הנוסחה תועתק לכל התאים הרלבנטיים בעמודה
C - (C3:C24)



                         
            


פתרון אלטרנטיבי:

פתרון קצר יותר אפשרי על-ידי שמוש בפונקציה: CHOOSE





הפונקציה בוחנת את המספר בתא B2 ]הארגומנט הראשון] ולפי ערכו (קוד הדרוג שהוא תמיד מספר שלם וחיובי) – מחזירה את התוצאה מתוך טבלת הפרמטרים.

יש לציין ש:
א. שיטה זו טובה רק למספר מצומצם של ערכים. מספר גדול מאד של ערכים (קודי דרוג בדוגמה שלנו) הופך את הנוסחה לארוכה ולמסורבלת.
ב. המספר שאותו מחפשים חייב, כאמור, להיות שלם וחיובי. אם קיים בחברה קוד דרוג 0 ׁ(או קוד דרוג שלילי) - הנוסחה תחזיר שגיאה: #VALUE!
ג. מספר הערכים לאחר הארגומנט הראשון חייב להתאים לערכים האפשריים בארגומנט זה.
במקרה שלנו: מכיון שקודי הדרוג האפשריים הם בתחום 1-5, יהיו בנוסחה (לאחר הארגומנט הראשון) 5 ערכים, כל אחד בהתאמה לקוד הדרוג:
אם B2 = 1, הנוסחה תחזיר את הערך הראשון (F3=0)
אם B2 = 2, הנוסחה תחזיר את הערך השני (F4=100)
אם B2 = 3, הנוסחה תחזיר את הערך השלישי (F5=500)
וכו'






לסכום, הצגנו שני פתרונות לבעית הבונוסים:
האחד, פתרון בשיטת ה- Nested IF
השני, פתרון בעזרת הפונקציה CHOOSE המחזירה את הערך המבוקש מהטבלה לפי ארגומנט שהוא למעשה אינדקס, המצביע על מקומו בטבלה.
בכך דומה פתרון זה לפתרונות ה: IF-INDEX וה: IF-VLOOKUP שהוצגו בפוסט הקודם.

מקַוֶה שתפיקו תועלת מההסבר J J J




תגובה 1: