Menu
flag Ar iconالعربيةdown icon

دالة 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

ابدأ الآن