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)
פתרון אלטרנטיבי:
הפונקציה בוחנת את המספר בתא B2 ]הארגומנט
הראשון] ולפי ערכו (קוד הדרוג שהוא תמיד מספר שלם וחיובי) – מחזירה את התוצאה מתוך
טבלת הפרמטרים.
יש לציין ש:
א. שיטה זו טובה רק למספר מצומצם של ערכים. מספר גדול מאד של ערכים (קודי דרוג בדוגמה שלנו) הופך את הנוסחה לארוכה ולמסורבלת.
א. שיטה זו טובה רק למספר מצומצם של ערכים. מספר גדול מאד של ערכים (קודי דרוג בדוגמה שלנו) הופך את הנוסחה לארוכה ולמסורבלת.
ב. המספר שאותו מחפשים חייב, כאמור, להיות
שלם וחיובי. אם קיים בחברה קוד דרוג 0 ׁ(או קוד דרוג שלילי) - הנוסחה תחזיר שגיאה:
#VALUE!
ג. מספר הערכים לאחר הארגומנט הראשון חייב
להתאים לערכים האפשריים בארגומנט זה.
במקרה שלנו: מכיון שקודי הדרוג האפשריים הם בתחום 1-5, יהיו בנוסחה (לאחר הארגומנט הראשון) 5 ערכים, כל אחד בהתאמה לקוד הדרוג:
במקרה שלנו: מכיון שקודי הדרוג האפשריים הם בתחום 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
מעולה ומובן. כל הכבוד!
השבמחק