Menu

פונקציית LAMBDA באקסל: פונקציות משלכם, MAP ו-BYROW

=LAMBDA(price,price*1.2)(B2) מגדירה פונקציה קטנה עם קלט אחד, price, וקוראת לה על B2. שמרו LAMBDA במנהל השמות כדי להשתמש בה כמו בפונקציה מובנית, או העבירו אותה ל-MAP, BYROW, SCAN ו-REDUCE.

כל גיליון בעמוד הזה חי: שנו מספר או נוסחה והוא יחושב מחדש.

=LAMBDA(price,price*1.2)(B2) מגדירה פונקציה קטנה עם קלט אחד, price, וקוראת לה מיד על B2: ה-2.5 של העט הופך ל-3. לבדה זו סתם גרסה ארוכה יותר של =B2*1.2. הטעם של LAMBDA הוא לתת לפונקציה שם במנהל השמות, כך שנוסחה ארוכה הופכת ל-=ADDVAT(B2), ולהעביר אותה ל-MAP, ל-BYROW ולשאר הפונקציות שלמטה.

פונקציה שנקראת על כל מחיר
C2
ABC
1ItemPriceWith VAT
2Pen2.53
3Bag120144
4Lamp3542
5Mug89.6
6Desk150180
לחצו על תא כדי לראות את הנוסחה שלו. שנו מספר או נוסחה והגיליון יחושב מחדש.

התחביר של 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 או תוסף:

  1. עברו ל-נוסחאות > מנהל השמות ולחצו על חדש (או נוסחאות > הגדר שם).
  2. בשדה שם, הקלידו את שם הפונקציה, למשל ADDVAT.
  3. בשדה "מפנה אל", הזינו את ה-LAMBDA בלי קלטים: =LAMBDA(price,price*1.2).
  4. לחצו על אישור. עכשיו הקלידו =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% הנחה:

הנחה של 10% על מחירים מעל 100
C2
ABC
1ItemPricePrice to pay
2Pen2.52.5
3Bag120108
4Lamp3535
5Mug88
6Desk150135
לחצו על תא כדי לראות את הנוסחה שלו. שנו מספר או נוסחה והגיליון יחושב מחדש.

התיק (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. הציון הטוב ביותר והממוצע של כל תלמיד:

הציון הטוב ביותר והממוצע לכל תלמיד
E2
ABCDEF
1StudentTest 1Test 2Test 3BestAverage
2Ann7285909082.3
3Ben6470587064
4Cara8892959591.7
5Dan7560818172
לחצו על תא כדי לראות את הנוסחה שלו. שנו מספר או נוסחה והגיליון יחושב מחדש.

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 עושה את אותו הדבר אבל מחזירה כל שלב, ולכן היא סכום מצטבר בנוסחה אחת:

סכום מצטבר וסכום כולל
C2
ABCD
1ItemPriceRunning totalTotal
2Pen2.52.5315.5
3Bag120122.5
4Lamp35157.5
5Mug8165.5
6Desk150315.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:

LAMBDA בעלת שם שמועברת ל-MAP
C2
ABC
1ItemPriceSale price
2Pen2.52.25
3Bag120108
4Lamp3531.5
5Mug87.2
6Desk150135
לחצו על תא כדי לראות את הנוסחה שלו. שנו מספר או נוסחה והגיליון יחושב מחדש.

כל מחיר מקבל 10% הנחה: 2.25, 108, 31.5, 7.2 ו-135. באקסל אפשר גם לקרוא ל-LAMBDA בעלת השם ישירות בתוך ה-LET, =LET(f,LAMBDA(x,x*2),f(5)), שמחזירה 10.

תרגול: סכום לכל שורה עם BYROW

תורכם
E2
ABCDE
1StudentTest 1Test 2Test 3Total
2Ann728590
3Ben647058
4Cara889295
5Dan756081
לחצו על תא כדי לראות את הנוסחה שלו. שנו מספר או נוסחה והגיליון יחושב מחדש.

תורכם: ב-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))) מחזירה את הערך הגדול ביותר של כל שורה, שנשפך למטה.

איור של שפות התכנות ב-Coddy

ללמוד תכנות עם Coddy

להתחיל