הפונקציה מצמצמת מערך לתוצאה מצטברת באמצעות החלה של פונקציית LAMBDA
על כל ערך.
דוגמאות לשימוש
REDUCE(5, A1:A3, LAMBDA(accumulator, current_value, accumulator+current_value))
REDUCE(2, A1:A3, LAMBDA(accumulator, current_value, accumulator*current_value))
תחביר
REDUCE(first_value, array_or_range, LAMBDA)
initial_value
: הערך הראשוני מסוגaccumulator
.array_or_range
: מערך או טווח שיצומצמו.LAMBDA
: פונקצייתLAMBDA
שתחול על כל ערך ב-array_or_range
כדי לצמצם אותו.- תחביר:
LAMBDA(name1, name2, formula_expression)
- דרישות:
- ל-
LAMBDA
חייבים להיות בדיוק 2 ארגומנטים בשםname
, וגםformula_expression
(ביטוי נוסחה) שמשתמש ב-names
האלה. כאשר מחילים את פונקצייתLAMBDA
, name1
נהייה תואם לערך הנוכחי שב-accumulator
ו-name2
נהייה תואם ל-current_value
שב-array_or_range
. ה-accumulator
מעודכן בכל שלב לערך הביניים שהתקבל בשלב הקודם. דוגמה לפעולת כפל פשוטה
- ל-
הערות
- פונקציית
LAMBDA
המועברת צריכה לקבל בדיוק 2 ארגומנטיname
, אחרת תוחזר השגיאה#N/A
. הארגומנטים האלה תואמים ל-accumulator
ול-current_value
, לפי הסדר. הם מוסברים כך:name1
: נהייה תואם לערך הנוכחי שב-accumulator
.name2
: נהייה תואם ל-current_value
במערך הקלט.
- ה-
accumulator
מופעל על ידיinitial_value
ומעודכן בכל שלב לערך הביניים שהתקבל בשלב הקודם.
- בזמן שמחילים את
LAMBDA
, ניתן למצוא את ה-current_value
שורה אחר שורה במערך הקלט.
- אפשר להעביר
פונקציה בעלת שם
לפרמטרLAMBDA
והיא תתפקד כמוLAMBDA
במקרה הזה. מידע נוסף על פונקציות בעלות שם- התחביר של
הפונקציה בעלת השם
חייב להיות תואם לתחביר שלLAMBDA
ל-REDUCE
, עם בדיוק 2 placeholders לארגומנטים שמוגדרים לה. - אין להוסיף סוגריים אחרי
הפונקציה בעלת השם
.
- התחביר של
דוגמאות
פעולת כפל פשוטה
מחזירה את התוצר של כל המרכיבים ב-A1:A3 וב-initial_value
.
נתונים לדוגמה:
A |
|
---|---|
1 |
3 |
2 |
2 |
3 |
4 |
דוגמה: =REDUCE(5, A1:A3, LAMBDA(accumulator, current_value, accumulator*current_value))
איך זה עובד:
בהתחלה, accumulator
= 5
1. מתבצע עיבוד של תא A1:
5 = 3 = |
לאחר העיבוד של תא A1:
15 =5*3 =(הערך המוחזר של |
2. מתבצע עיבוד של תא A2:
15 = 2 = |
לאחר העיבוד של תא A2:
30 =2*15 =(הערך המוחזר של |
3. מתבצע עיבוד של תא A3:
30 = 4 = |
לאחר העיבוד של תא A3:
120 =4*30 =(הערך המוחזר של |
תוצאה:
120 |
סכום אם המחיר הוא 20$ או יותר
מחשבת סכום של כל המחירים שהם בגובה 20$ או יותר.
נתונים לדוגמה:
A |
|
---|---|
1 |
50$ |
2 |
10$ |
3 |
30$ |
4 |
20$ |
דוגמה: =REDUCE(0, A1:A4, LAMBDA(accumulator, price, IF(price>=20, accumulator + price, accumulator)))
תוצאה:
100$ |
שימוש בפונקציה בעלת שם כפונקציית LAMBDA
מחזירה את המחיר הסופי אחרי שמגדילים אותו באחוז מסוים בכל תקופה.
נתונים לדוגמה:
A |
B |
C |
|
---|---|---|---|
1 |
2022 |
10% |
מחיר התחלתי: |
2 |
2023 |
5% |
100$ |
3 |
2024 |
5% |
|
4 |
2025 |
10% |
דוגמה: =REDUCE(C2,B1:B4,PRICE_INCREASE)
הפונקציה בעלת השם: PRICE_INCREASE
היא פונקציה בעלת שם
שמפיקה את התוצאה אחרי ההגדלה בערך האחוזים שמופיע בעמודה B.
הגדרת הנוסחה: =accumulator+accumulator*cell
כאשר accumulator
ו-cell
הם placeholders לארגומנטים שהוגדרו עבור PRICE_INCREASE
.
תוצאה:
133.4 |
שימוש בפונקציה בעלת שם כ-LAMBDA עם מערך נתונים דו-מימדי
מאתרת את רשימת העובדים הייחודיים של הרבעון, תוך שמירה על סדר השורות.
נתונים לדוגמה:
A |
B |
C |
|||
---|---|---|---|---|---|
1 |
רבעון 1 |
רבעון 2 |
רבעון 3 |
רבעון 4 |
|
2 |
2020 |
ג'ון |
אדם |
סטייסי |
אדם |
3 |
2021 |
פיטר |
מוריס |
ג'ון |
קימברלי |
4 |
2022 |
סטייסי |
מייקל |
פיטר |
אדם |
הפונקציה בעלת השם: ADD_IF_NOT_PRESENT
היא פונקציה בעלת שם
שמוסיפה ערך מחרוזת נתון למערך ערכים.
הגדרת הפונקציה: =IF(CONTAINS(new_value, existing_values), existing_values, {existing_values, new_value})
, כאשר existing_values
ו-new_value
הם placeholders לארגומנטים שמוגדרים עבור ADD_IF_NOT_PRESENT
בסדר הזה, ו-CONTAINS
היא named function
נוספת.
דוגמה: =REDUCE({B2}, B2:E4, ADD_IF_NOT_PRESENT)
תוצאה:
ג'ון |
אדם |
סטייסי |
פיטר |
מוריס |
קימברלי |
מייקל |
שגיאות נפוצות
ב-LAMBDA המועברת אין בדיוק 2 ארגומנטי nameאם לפונקציית LAMBDA
אין 2 ארגומנטי name
, מתרחשת השגיאה הבאה:
"מספר הארגומנטים ל-LAMBDA שגוי. היו אמורים להתקבל 3 ארגומנטים ובפועל התקבלו 2."
דוגמה: =REDUCE(5, C1:C4, LAMBDA(current_value, current_value+1))
בדוגמה הזו, פונקציית LAMBDA
קיבלה רק ארגומנט name
אחד, כשהיה צורך ב-2.
אם הפרמטר האחרון של פונקציית REDUCE
לא היה פונקציית LAMBDA
, מתרחשת השגיאה הבאה:
"הארגומנט חייב להיות LAMBDA."
דוגמה: =REDUCE(5, C1:C4, 3)
בדוגמה הזו, הפונקציה האחרונה היא 3
, במקום פונקציית LAMBDA
.
אם ארגומנט name
אחד או יותר אינו תקני, מתרחשת השגיאה הבאה:
"ארגומנט אחד של פונקציית LAMBDA אינו שם תקני."
דוגמה: =REDUCE(5, C1:C4, LAMBDA(C1, v, C1+v))
בדוגמה הזו, C1
הוא name
לא תקני כי הוא מתנגש עם טווח.
ראו בנוסף
- פונקציית LAMBDA: הפונקציה הזו מאפשרת ליצור ולהחזיר פונקציה בהתאמה אישית, עם קבוצה של
names
ועםformula_expression
(ביטוי נוסחה) שמשתמש בהם. - פונקציית MAP: הפונקציה הזו ממפה כל ערך במערכים הנתונים לערך חדש.
- פונקציית BYROW: הפונקציה הזו מקבצת מערך לפי שורות.
- פונקציית BYCOL: הפונקציה הזו מקבצת מערך לפי עמודות.
- פונקציית SCAN: הפונקציה הזו סורקת מערך ומייצרת ערכי ביניים.
- הפונקציה MAKEARRAY: הפונקציה הזו יוצרת מערך מחושב של תכונות מוגדרות.
- יצירה של פונקציות בעלות שם ושימוש בהן: הפונקציה הזו מאפשרת לכם ליצור ולאחסן פונקציות בהתאמה אישית, בדומה ל-
LAMBDA
.