Excel’da LET va LAMBDA: VBA’siz o‘z funksiyalaringiz
Chuqur3 daqInnovialabs tahririyati
Qisqacha
LET formula ichidagi oraliq qiymatlarga nom beradi, LAMBDA esa formulani nom bilan saqlab, SUM kabi chaqiriladigan o‘z funksiyangizga aylantiradi — makros va VBA’siz.
LET va LAMBDA nima qiladi
- LET formula ichida o‘zgaruvchilar beradi: qiymat bir marta hisoblanadi va keyin nomi bilan ishlatiladi.
- LAMBDA parametrli funksiyani tasvirlaydi. Uni Name Manager’da saqlasangiz,
=MARGIN(B2,C2)kabi kitobning o‘z funksiyasiga ega bo‘lasiz. - MAP, REDUCE, BYROW LAMBDA’ni qabul qilib, uni massivlarga qo‘llaydi — element bo‘yicha, qator bo‘yicha yoki yig‘ib borish bilan.
Bu funksiyalar Microsoft 365 va veb uchun Excel’da mavjud; eski versiyalarda LAMBDA bo‘lmasligi mumkin — unda #NAME? xatosini ko‘rasiz. Google Sheets ham ularning barchasini qo‘llab-quvvatlaydi.
Misollarda argumentlar vergul bilan ajratilgan. Ba’zi mintaqaviy sozlamalarda Excel nuqtali vergul ishlatadi.
LET: uzun formula o‘qiladigan bo‘ladi
Odatiy muammo — bitta bo‘lak formulada bir necha marta takrorlanadi. Masalan, mijoz bo‘yicha marja:
=IF(SUMIFS(C:C,A:A,F2)=0,0,(SUMIFS(C:C,A:A,F2)-SUMIFS(D:D,A:A,F2))/SUMIFS(C:C,A:A,F2))
LET bilan:
=LET(
rev, SUMIFS(C:C, A:A, F2),
cost, SUMIFS(D:D, A:A, F2),
IF(rev = 0, 0, (rev - cost) / rev)
)
Afzalliklari: har bir SUMIFS bir marta hisoblanadi, mantiq darhol ko‘rinadi, bitta shartni o‘zgartirish uchun barcha nusxalarni qidirish shart emas. LET’ning oxirgi argumenti — doim yakuniy hisob.
LAMBDA: uch qadamda o‘z funksiyangiz
- LAMBDA’ni katakda yozing va darhol chaqirib tekshiring:
=LAMBDA(rev, cost, IF(rev=0, 0, (rev-cost)/rev))(C2, D2) - Formulas → Name Manager → New ni oching,
MARGINnomini bering va «Refers to» maydoniga formulani oxiridagi chaqiruvsiz qo‘ying. - Kitobning istalgan katagida ishlating:
=MARGIN(C2, D2).
LAMBDA ichida LET ishlatish mumkin, nomlangan LAMBDA esa o‘zini o‘zi chaqira oladi — rekursiya shunday quriladi, masalan matndagi almashtirishlar ro‘yxatini ketma-ket qo‘llash uchun.
LAMBDA’ni katakka chaqiruvsiz kiritsangiz, Excel #CALC! qaytaradi. Argumentlar soni noto‘g‘ri bo‘lsa — #VALUE!.
MAP, REDUCE va BYROW amalda
MAP — funksiyani har bir elementga qo‘llash:
=MAP(A2:A100, LAMBDA(x, PROPER(TRIM(x))))
Butun ustun uchun ortiqcha bo‘shliqlarni olib tashlaydi va ismlarni bosh harf bilan yozadi.
BYROW — har bir qator uchun bitta qiymat:
=BYROW(B2:E50, LAMBDA(r, MAX(r) - MIN(r)))
Har bir qatordagi ko‘rsatkichlar oralig‘i. Ichki funksiya massiv emas, bitta qiymat qaytarishi kerak.
REDUCE — natijani yig‘ib borish:
=REDUCE(0, B2:B200, LAMBDA(acc, s, acc + IF(s > H1, s * H2, s * H3)))
Stavka H1’dagi chegaraga bog‘liq bo‘lgan komissiya summasi, stavkalar H2 va H3’da. acc — yig‘uvchi, 0 — uning boshlang‘ich qiymati. Oraliq natijalar kerak bo‘lsa, xuddi shu mantiq bilan SCAN dan foydalaning.
Google Sheets’dagi muqobillar
| Excel | Google Sheets |
|---|---|
| LET, LAMBDA, MAP, REDUCE, BYROW, BYCOL, SCAN | xuddi shu funksiyalar |
| Name Manager + LAMBDA | Data → Named functions |
Google Sheets’da nomlangan funksiya alohida panelda yaratiladi: nom, argument o‘rinbosarlari va formula ta’rifini kiritasiz. Uni LAMBDA bilan o‘rash kerak emas — argumentlar formulada nomi bilan ishlatiladi. Nomlangan funksiyalarni boshqa jadvaldan import qilish mumkin.
Ko‘p uchraydigan xatolar
- MAP yoki BYROW ichida butun ustunga havola — funksiya million bo‘sh qatordan o‘tadi va sekinlashadi. Diapazonni cheklang yoki jadvallardan foydalaning.
- Nomlangan funksiyada tavsif yo‘q — yarim yildan keyin u nima qilishini hech kim eslamaydi. Izoh maydonini to‘ldiring.
- Murakkab mantiqni qismlarga bo‘lib tekshirmaslik. Avval LAMBDA’ni katakda to‘g‘ridan-to‘g‘ri chaqirib sozlang, keyin saqlang.
- Funksiya barcha fayllarda paydo bo‘lishini kutish. Nomlangan LAMBDA bitta kitob ichida yashaydi; ko‘chirish uchun varaqni nusxalang yoki Excel Labs qo‘shimchasidan foydalaning.