=LAMBDA(price,price*1.2)(B2) מגדירה פונקציה קטנה עם קלט אחד, price, וקוראת לה מיד על B2: ה-2.5 של העט הופך ל-3. לבדה זו סתם גרסה ארוכה יותר של =B2*1.2. הטעם של LAMBDA הוא לתת לפונקציה שם במנהל השמות, כך שנוסחה ארוכה הופכת ל-=ADDVAT(B2), ולהעביר אותה ל-MAP, ל-BYROW ולשאר הפונקציות שלמטה.
| A | B | C | |
|---|---|---|---|
| 1 | Item | Price | With VAT |
| 2 | Pen | 2.5 | 3 |
| 3 | Bag | 120 | 144 |
| 4 | Lamp | 35 | 42 |
| 5 | Mug | 8 | 9.6 |
| 6 | Desk | 150 | 180 |
התחביר של LAMBDA
=LAMBDA([parameter1, parameter2, ...], calculation)
- כל
parameterהוא שם לקלט, כמו השמות ב-LET. מותרים עד 253. - הארגומנט האחרון הוא ה-
calculation, שמשתמש בפרמטרים. - ערכים לפרמטרים נכתבים בסוגריים מיד אחרי הסוגר האחרון:
=LAMBDA(x,y,x*y)(3,4)מחזירה 12.
LAMBDA, MAP, BYROW, BYCOL, SCAN, REDUCE ו-MAKEARRAY דורשות Microsoft 365, Excel 2024 או Excel לאינטרנט. ב-Excel 2021 יש LET אבל לא את אלה. גם ב-Google Sheets יש LAMBDA, ושם שומרים אותה תחת שם עם נתונים > פונקציות בעלות שם.
שמירת LAMBDA כפונקציה משלכם
LAMBDA הופכת לשימושית שוב ושוב כשנותנים לה שם. אקסל לא צריך לזה VBA או תוסף:
- עברו ל-נוסחאות > מנהל השמות ולחצו על חדש (או נוסחאות > הגדר שם).
- בשדה שם, הקלידו את שם הפונקציה, למשל
ADDVAT. - בשדה "מפנה אל", הזינו את ה-LAMBDA בלי קלטים:
=LAMBDA(price,price*1.2). - לחצו על אישור. עכשיו הקלידו
=ADDVAT(B2)בכל תא של חוברת העבודה.
Name: ADDVAT
Refers to: =LAMBDA(price,price*1.2)
In a cell: =ADDVAT(B2) returns 3 when B2 is 2.5
הפונקציה קיימת רק בחוברת העבודה הזו. העתיקו גיליון שמשתמש בה לחוברת עבודה אחרת והשם עובר יחד איתו. שנו את ה-LAMBDA פעם אחת במנהל השמות וכל תא שקורא לה מתעדכן. בדקו LAMBDA בתא עם קלטים בסוגריים לפני שאתם שומרים אותה; שם קל יותר לראות טעות.
MAP: הפעלת LAMBDA על כל תא
MAP קוראת ל-LAMBDA פעם אחת לכל תא בטווח ומחזירה טווח באותה צורה. כאן כל מחיר מעל 100 מקבל 10% הנחה:
| A | B | C | |
|---|---|---|---|
| 1 | Item | Price | Price to pay |
| 2 | Pen | 2.5 | 2.5 |
| 3 | Bag | 120 | 108 |
| 4 | Lamp | 35 | 35 |
| 5 | Mug | 8 | 8 |
| 6 | Desk | 150 | 135 |
התיק (120) הופך ל-108 והשולחן (150) הופך ל-135; שאר המחירים עוברים כמו שהם. נוסחה אחת ב-C2 מכסה את כל העמודה. MAP יכולה גם לעבור על שני טווחים באותו גודל זה לצד זה: עם כמויות ב-D2:D6, =MAP(B2:B6,D2:D6,LAMBDA(p,q,p*q)) מכפילה כל מחיר בכמות שלו.
BYROW: תוצאה אחת לכל שורה
BYROW מעבירה ל-LAMBDA שורה שלמה בכל פעם, כך שה-LAMBDA יכולה להפעיל עליה MAX, SUM או AVERAGE. הציון הטוב ביותר והממוצע של כל תלמיד:
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Student | Test 1 | Test 2 | Test 3 | Best | Average |
| 2 | Ann | 72 | 85 | 90 | 90 | 82.3 |
| 3 | Ben | 64 | 70 | 58 | 70 | 64 |
| 4 | Cara | 88 | 92 | 95 | 95 | 91.7 |
| 5 | Dan | 75 | 60 | 81 | 81 | 72 |
E2 מחזיר 90, 70, 95 ו-81; F2 מחזיר 82.3, 64, 91.7 ו-72. =MAX(B2:D5) פשוטה הייתה נותנת מספר אחד לכל הטבלה; BYROW היא מה שמפריד בין השורות בנוסחה אחת. BYCOL עושה את אותו הדבר לכל עמודה: =BYCOL(B2:D5,LAMBDA(c,AVERAGE(c))) מחזירה את הממוצע של כל מבחן.
SCAN ו-REDUCE: סכומים מצטברים
REDUCE עוברת על טווח ומעבירה ערך הלאה, ומחזירה רק את התוצאה הסופית. SCAN עושה את אותו הדבר אבל מחזירה כל שלב, ולכן היא סכום מצטבר בנוסחה אחת:
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Item | Price | Running total | Total |
| 2 | Pen | 2.5 | 2.5 | 315.5 |
| 3 | Bag | 120 | 122.5 | |
| 4 | Lamp | 35 | 157.5 | |
| 5 | Mug | 8 | 165.5 | |
| 6 | Desk | 150 | 315.5 |
הארגומנט הראשון, 0, הוא ערך ההתחלה. לכל מחיר, ה-LAMBDA מקבלת את הסכום עד עכשיו ואת המחיר, ומחזירה את הסכום החדש. C2 עובר דרך 2.5, 122.5, 157.5, 165.5, 315.5, ו-D2 מציג רק את ה-315.5 הסופי. בשביל סכום פשוט SUM קלה יותר, אבל REDUCE יכולה להעביר כל דבר, כמו טקסט שגדל או ספירה שעולה רק בחלק מהשורות.
מתן שם ל-LAMBDA בתוך נוסחה אחת עם LET
LAMBDA לא צריכה את מנהל השמות אם רק נוסחה אחת משתמשת בה. תנו לה שם עם LET והעבירו את השם ל-MAP או ל-BYROW:
| A | B | C | |
|---|---|---|---|
| 1 | Item | Price | Sale price |
| 2 | Pen | 2.5 | 2.25 |
| 3 | Bag | 120 | 108 |
| 4 | Lamp | 35 | 31.5 |
| 5 | Mug | 8 | 7.2 |
| 6 | Desk | 150 | 135 |
כל מחיר מקבל 10% הנחה: 2.25, 108, 31.5, 7.2 ו-135. באקסל אפשר גם לקרוא ל-LAMBDA בעלת השם ישירות בתוך ה-LET, =LET(f,LAMBDA(x,x*2),f(5)), שמחזירה 10.
תרגול: סכום לכל שורה עם BYROW
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Student | Test 1 | Test 2 | Test 3 | Total |
| 2 | Ann | 72 | 85 | 90 | |
| 3 | Ben | 64 | 70 | 58 | |
| 4 | Cara | 88 | 92 | 95 | |
| 5 | Dan | 75 | 60 | 81 |
תורכם: ב-E2, החזירו את הסכום של שלושת המבחנים של כל תלמיד, מספר אחד לכל שורה, בנוסחה אחת.
שגיאות נפוצות ב-LAMBDA
=LAMBDA(x,x*2) #CALC! defined but never called
=LAMBDA(x,x*2)(5) 10
=LAMBDA(x,y,x*y)(3) #VALUE! two parameters, one value
=LAMBDA(x,x*2)(3,4) #VALUE! one parameter, two values
- #CALC! פירושה ש-LAMBDA יושבת בתא בלי שקראו לה. הוסיפו את הקלטים בסוגריים, או שמרו אותה במנהל השמות וקראו לה בשם.
- #VALUE! פירושה שמספר הערכים לא תואם למספר הפרמטרים. ספרו אותם בשני הצדדים.
- #NAME? פירושה שבגרסת האקסל אין LAMBDA, או ששם ששמרתם מאוית לא נכון. שם של פרמטר הולך לפי הכללים של LET: בלי רווחים, ובלי שם שנראה כמו כתובת תא.
- LAMBDA ב-BYROW שמחזירה כמה ערכים לכל שורה נותנת #CALC!. כל שורה חייבת להפיק ערך אחד; כדי להחזיר שורה של תוצאות, השתמשו ב-MAKEARRAY או בנוסחת מערך רגילה במקום.
שאלות נפוצות
מה היא פונקציית LAMBDA באקסל?
היא הופכת נוסחה לפונקציה עם קלטים בעלי שם. =LAMBDA(price,price*1.2) מקבלת קלט אחד בשם price ומחזירה את price כפול 1.2. קוראים לה כשמוסיפים את הקלט בסוגריים, =LAMBDA(price,price*1.2)(B2), או שומרים אותה תחת שם במנהל השמות.
איך יוצרים פונקציה משלכם באקסל בלי VBA?
פתחו את נוסחאות > מנהל השמות > חדש, הקלידו שם כמו ADDVAT, ובשדה "מפנה אל" הזינו =LAMBDA(price,price*1.2). לחצו על אישור, ו-=ADDVAT(B2) עובדת בכל תא של אותה חוברת עבודה.
למה ה-LAMBDA שלי מחזירה #CALC!?
LAMBDA שמוקלדת בתא בלי קלטים, כמו =LAMBDA(x,x*2), היא פונקציה שאף אחד לא קרא לה, ולכן אקסל מציג #CALC!. הוסיפו את הקלט בסוגריים אחריה, =LAMBDA(x,x*2)(5), או שמרו אותה במנהל השמות.
באילו גרסאות של אקסל יש LAMBDA?
Microsoft 365, Excel 2024 ו-Excel לאינטרנט, יחד עם MAP, BYROW, BYCOL, SCAN, REDUCE ו-MAKEARRAY. ב-Excel 2021 יש LET אבל אין LAMBDA.
מה BYROW עושה באקסל?
היא מריצה LAMBDA פעם אחת לכל שורה של טווח ומחזירה תוצאה אחת לכל שורה: =BYROW(B2:D5,LAMBDA(r,MAX(r))) מחזירה את הערך הגדול ביותר של כל שורה, שנשפך למטה.