LAMBDA ni Kazi Mpya Bora ya Excel

Kwa sasa, Microsoft Excel ina kazi karibu mia tano za karatasi zinazopatikana kupitia dirisha la Mchawi wa Kazi - kifungo fx kwenye upau wa formula. Hii ni seti ya heshima sana, lakini, hata hivyo, karibu kila mtumiaji mapema au baadaye hukutana na hali ambapo orodha hii haina kazi anayohitaji - kwa sababu tu haipo katika Excel.

Hadi sasa, njia pekee ya kutatua tatizo hili ilikuwa macros, yaani kuandika kazi yako mwenyewe iliyofafanuliwa na mtumiaji (UDF = Kazi Iliyoainishwa na Mtumiaji) katika Visual Basic, ambayo inahitaji ujuzi sahihi wa programu na, wakati mwingine, si rahisi hata kidogo. Hata hivyo, kwa sasisho za hivi karibuni za Office 365, hali imebadilika kuwa bora - kazi maalum ya "wrapper" imeongezwa kwa Excel. LAMBDA. Kwa msaada wake, kazi ya kuunda kazi zako mwenyewe sasa imetatuliwa kwa urahisi na kwa uzuri.

Hebu tuangalie kanuni ya matumizi yake katika mfano ufuatao.

Kama unavyojua zaidi, Excel ina vitendaji kadhaa vya uchanganuzi vya tarehe ambavyo hukuruhusu kuamua nambari ya siku, mwezi, wiki na mwaka kwa tarehe fulani. Lakini kwa sababu fulani hakuna kazi ambayo huamua idadi ya robo, ambayo pia inahitajika mara nyingi, sawa? Wacha turekebishe upungufu huu na tuunde na LAMBDA mwenyewe kazi mpya ya kutatua tatizo hili.

Hatua ya 1. Andika formula

Wacha tuanze na ukweli kwamba kwa mikono kwa njia ya kawaida tutaandika formula kwenye seli ya karatasi ambayo huhesabu kile tunachohitaji. Kwa upande wa nambari ya robo, hii inaweza kufanywa, kwa mfano, kama hii:

LAMBDA ni Excels New Super Function

Hatua ya 2. Kufunga katika LAMBDA na kupima

Sasa ni wakati wa kutumia kitendakazi kipya cha LAMBDA na kufunika fomula yetu ndani yake. Sintaksia ya kukokotoa ni kama ifuatavyo:

=LAMBDA(Tofauti1; Tofauti2; … VariableN ; Ufafanuzi)

ambapo majina ya vigeu kimoja au zaidi yameorodheshwa kwanza, na hoja ya mwisho daima ni fomula au usemi uliokokotolewa unaozitumia. Majina yanayobadilika hayafai kuonekana kama anwani za seli na yasiwe na vitone.

Kwa upande wetu, kutakuwa na kutofautiana moja tu - tarehe ambayo tunahesabu nambari ya robo. Wacha tuite kutofautisha kwake, tuseme, d. Kisha kufunga fomula yetu katika chaguo la kukokotoa LAMBDA na kubadilisha anwani ya seli ya asili A2 na jina la uwongo la kutofautisha, tunapata:

LAMBDA ni Excels New Super Function

Tafadhali kumbuka kuwa baada ya mabadiliko hayo, formula yetu (kwa kweli, sahihi!) ilianza kuzalisha hitilafu, kwa sababu sasa tarehe ya awali kutoka kwa kiini A2 haijahamishiwa kwake. Kwa majaribio na kujiamini, unaweza kupitisha hoja kwa kuziongeza baada ya chaguo la kukokotoa LAMBDA kwenye mabano:

LAMBDA ni Excels New Super Function

Hatua ya 3. Unda jina

Sasa kwa sehemu rahisi na ya kufurahisha. Tunafungua Jina la Meneja tab formula (Mfumo - Meneja wa Jina) na unda jina jipya na kitufe Kujenga (Unda). Kuja na kuandika jina kwa ajili ya kazi yetu ya baadaye (kwa mfano, Nomkvartala), na shambani Link (Rejea) nakili kwa uangalifu kutoka kwa upau wa fomula na ubandike kazi yetu LAMBDA, tu bila hoja ya mwisho (A2):

LAMBDA ni Excels New Super Function

Kila kitu. Baada ya kubofya OK kitendakazi kilichoundwa kinaweza kutumika katika seli yoyote kwenye laha yoyote ya kitabu hiki cha kazi:

LAMBDA ni Excels New Super Function

Tumia katika vitabu vingine

Kwa sababu imeundwa na LAMBDA Kwa kuwa vitendaji vilivyoainishwa na mtumiaji, kwa kweli, ni safu zilizotajwa, unaweza kuzifanya zipatikane sio tu kwenye kitabu cha kazi cha sasa. Itatosha kunakili kisanduku na chaguo za kukokotoa na kuibandika mahali popote kwenye laha ya faili nyingine.

LAMBDA na safu zinazobadilika

Vitendaji maalum vilivyoundwa na chaguo za kukokotoa LAMBDA kusaidia kazi kwa ufanisi na safu mpya za nguvu na kazi zao (Kichungi, UNIKI, GRADE) iliongezwa kwa Microsoft Excel mnamo 2020.

Hebu tuseme tunataka kuunda kitendakazi kipya kilichofafanuliwa na mtumiaji ambacho kinaweza kulinganisha orodha mbili na kurudisha tofauti kati yao - vipengele hivyo kutoka kwenye orodha ya kwanza ambavyo haviko katika ya pili. Kazi ya maisha, sivyo? Hapo awali, kwa hili walitumia kazi ama la VPR (VLOOKUP), au PivotTables, au hoja za Power Query. Sasa unaweza kufanya na formula moja:

LAMBDA ni Excels New Super Function

Katika toleo la Kiingereza itakuwa:

=LAMBDA(a;b;ФИЛЬТР(a;СЧЁТЕСЛИ(b;a)=0))(A1:A6;C1:C10)

Hapa kazi COUNTIF huhesabu idadi ya matukio ya kila kipengele cha orodha ya kwanza katika pili, na kisha kazi Kichungi huchagua wale tu ambao hawakuwa na matukio haya. Kwa kufunga muundo huu ndani LAMBDA na kuunda safu iliyotajwa kulingana nayo na jina, kwa mfano, USAMBAZAJI WA TAFUTA - tutapata kazi rahisi ambayo inarudisha matokeo ya kulinganisha orodha mbili katika mfumo wa safu ya nguvu:

LAMBDA ni Excels New Super Function

Ikiwa data ya chanzo sio ya kawaida, lakini meza "smart", kazi yetu pia itashughulikia bila shida:

LAMBDA ni Excels New Super Function

Mfano mwingine ni kugawanya maandishi kwa nguvu kwa kuyabadilisha hadi XML na kisha kuyachanganua seli kwa seli kwa kutumia chaguo za kukokotoa za FILTER.XML tulizochanganua hivi majuzi. Ili kutozalisha tena fomula hii tata kwa mikono kila wakati, itakuwa rahisi kuifunga kwa LAMBDA na kuunda safu inayobadilika kulingana nayo, ambayo ni, kazi mpya ya kompakt na rahisi, ukiipa jina, kwa mfano, RAZDTEXT:

LAMBDA ni Excels New Super Function

Hoja ya kwanza ya kazi hii itakuwa kiini na maandishi chanzo, na pili - tabia ya kitenganishi, na itarudi matokeo kwa namna ya safu ya usawa ya nguvu. Nambari ya kazi itakuwa kama ifuatavyo:

=LAMBDA(t;d; TRANSPOSE(FILTER.XML(“"&BADILISHA (t;d? "«)&»";"//Y")))

Orodha ya mifano haina mwisho - katika hali yoyote ambapo mara nyingi unapaswa kuingiza fomula ile ile ndefu na ngumu, kazi ya LAMBDA itafanya maisha iwe rahisi sana.

Uhesabuji unaorudiwa wa wahusika

Mifano yote ya awali imeonyesha upande mmoja tu, ulio dhahiri zaidi, wa kazi ya LAMBDA - matumizi yake kama "kifuniko" cha kufunga fomula ndefu ndani yake na kurahisisha ingizo lao. Kwa kweli, LAMBDA ina upande mwingine, wa kina zaidi, ambao huigeuza kuwa karibu lugha kamili ya programu.

Ukweli ni kwamba kipengele muhimu cha kimsingi cha kazi za LAMBDA ni uwezo wa kuzitekeleza kujirudia - mantiki ya mahesabu, wakati katika mchakato wa kuhesabu kazi inajiita yenyewe. Kutoka kwa tabia hiyo, inaweza kuonekana kuwa ya kutisha, lakini katika programu, kujirudia ni jambo la kawaida. Hata katika macros katika Visual Basic, unaweza kutekeleza, na sasa, kama unaweza kuona, imekuja kwa Excel. Hebu jaribu kuelewa mbinu hii kwa mfano wa vitendo.

Tuseme tunataka kuunda chaguo la kukokotoa lililofafanuliwa na mtumiaji ambalo lingeondoa herufi zote kutoka kwa maandishi chanzo. Umuhimu wa kazi kama hiyo, nadhani, hauitaji kudhibitisha - itakuwa rahisi sana kufuta data ya pembejeo iliyojaa kwa msaada wake, sivyo?

Hata hivyo, ikilinganishwa na mifano ya awali, isiyo ya kujirudia, matatizo mawili yanatungoja.

  1. Tutalazimika kuja na jina la kazi yetu kabla ya kuanza kuandika msimbo wake, kwa sababu ndani yake, jina hili tayari litatumika kuita kazi yenyewe.
  2. Kuingiza kitendakazi kama hiki cha kujirudi katika kisanduku na kulitatua kwa kubainisha hoja kwenye mabano baada ya LAMBDA (kama tulivyofanya awali) haitafanya kazi. Utalazimika kuunda kitendakazi mara moja "kutoka mwanzo" ndani Jina la Meneja (Meneja wa Jina).

Wacha tuite kazi yetu, tuseme, SAFI na tungependa iwe na hoja mbili - maandishi yasafishwe na orodha ya herufi zilizotengwa kama mfuatano wa maandishi:

LAMBDA ni Excels New Super Function

Wacha tuunde, kama tulivyofanya hapo awali, kwenye kichupo formula в Meneja wa jina safu iliyotajwa, ipe jina CLEAR na uingie kwenye sehemu Mbalimbali ujenzi ufuatao:

=LAMBDA(t;d;IF(d=””;t;WAZI(BADALA(t;KUSHOTO(d);”);KATIKA(d;2;255)))))

Hapa kigezo t ndio maandishi asilia yatakayofutwa, na d ndio orodha ya herufi zinazopaswa kufutwa.

Yote inafanya kazi kama hii:

Uigaji 1

Kipande SUBSTITUTE(t;LEFT(d);””), kama unavyoweza kukisia, kinachukua nafasi ya herufi ya kwanza kutoka kwa herufi ya kushoto kutoka kwa seti d ili kufutwa katika matini chanzo t na mfuatano wa maandishi tupu, yaani, huondoa “ A”. Kama matokeo ya kati, tunapata:

Vsh zkz n 125 rubles.

Uigaji 2

Kisha chaguo la kukokotoa linajiita na kama pembejeo (hoja ya kwanza) inapokea kile kilichosalia baada ya kusafisha katika hatua ya awali, na hoja ya pili ni safu ya wahusika waliotengwa kuanzia si ya kwanza, lakini kutoka kwa tabia ya pili, yaani, "BVGDEEGZIKLMNOPRSTUFHTSCHSHSHCHYYYYYA. ," bila "A" ya awali - hii inafanywa na kazi ya MID. Kama hapo awali, kazi inachukua herufi ya kwanza kutoka kushoto ya iliyobaki (B) na kuibadilisha katika maandishi aliyopewa (Zkz n 125 rubles) na kamba tupu - tunapata kama matokeo ya kati:

125 ru.

Uigaji 3

Chaguo la kukokotoa linajiita tena, likipokea kama hoja ya kwanza kile kilichosalia cha maandishi kusafishwa katika marudio ya awali (Bsh zkz n 125 ru.), Na kama hoja ya pili, seti ya herufi zilizotengwa zimepunguzwa na mhusika mmoja zaidi. kushoto, yaani “VGDEEGZIKLMNOPRSTUFHTSCHSHSHCHYYYYUYA.,” bila “B” ya awali. Kisha tena inachukua herufi ya kwanza kutoka kushoto (B) kutoka kwa seti hii na kuiondoa kutoka kwa maandishi - tunapata:

sh zkz n 125 ru.

Na kadhalika - natumaini kupata wazo. Kwa kila marudio, orodha ya herufi zitakazoondolewa itapunguzwa upande wa kushoto, na tutatafuta na kubadilisha herufi inayofuata kutoka kwa seti kwa utupu.

Wakati wahusika wote wataisha, tutahitaji kuondoka kwenye kitanzi - jukumu hili linafanywa tu na kazi IF (KAMA), ambayo muundo wetu umefungwa. Ikiwa hakuna herufi zilizosalia kufuta (d=””), basi kitendakazi hakipaswi kujiita tena, lakini kinapaswa kurudisha maandishi ili kufutwa (kigeu t) katika fomu yake ya mwisho.

Kujirudiarudia kwa seli

Vile vile, unaweza kutekeleza hesabu inayojirudia ya seli katika safu fulani. Tuseme tunataka kuunda chaguo la kukokotoa lambda linaloitwa ORODHA YA KUBADILISHA kwa uingizwaji wa jumla wa vipande katika maandishi chanzo kulingana na orodha fulani ya marejeleo. Matokeo yake yanapaswa kuonekana kama hii:

LAMBDA ni Excels New Super Function

Wale. kwenye hafla yetu ORODHA YA KUBADILISHA kutakuwa na hoja tatu:

  1. seli iliyo na maandishi ya kuchakatwa (anwani ya chanzo)
  2. seli ya kwanza ya safu wima yenye thamani za kutafuta kutoka kwenye utafutaji
  3. seli ya kwanza ya safu wima iliyo na maadili mbadala kutoka kwa utafutaji

Chaguo za kukokotoa zinapaswa kwenda kutoka juu hadi chini kwenye saraka na kuchukua nafasi kwa mpangilio chaguo zote kutoka safu wima ya kushoto Kutafuta kwa chaguzi zinazolingana kutoka safu ya kulia Msaada. Unaweza kutekeleza hili na kazi ifuatayo ya kujirudia ya lambda:

LAMBDA ni Excels New Super Function

Hapa, kigezo cha t huhifadhi maandishi asilia kutoka kwa safu wima inayofuata Anwani, na viambishi n na z vinaelekeza kwenye seli za kwanza kwenye safuwima Kutafuta и Msaada, kwa mtiririko huo.
Kama ilivyo katika mfano uliopita, chaguo la kukokotoa hili kwanza hubadilisha maandishi asilia na chaguo za kukokotoa MBADALA (BADALA) data kwenye safu ya kwanza ya saraka (km SPBon St Petersburg), na kisha hujiita yenyewe, lakini kwa kuhama kwenye saraka hadi mstari unaofuata (yaani inachukua nafasi St Petersburg on St Petersburg) Kisha hujiita tena na mabadiliko ya chini - na kuchukua nafasi ya tayari Petro on St Petersburg nk

Shift chini kwa kila marudio hutekelezwa na utendaji wa kawaida wa excel KUTOLEWA (OFFSET), ambayo katika kesi hii ina hoja tatu - safu ya asili, mabadiliko ya safu (1) na mabadiliko ya safu (0).

Naam, mara tu tunapofikia mwisho wa saraka (n = ""), ni lazima tukomeshe kujirudia - tunaacha kujiita wenyewe na kuonyesha kile ambacho kimekusanya baada ya uingizwaji wote katika kutofautiana kwa maandishi ya chanzo t.

Ni hayo tu. Hakuna macros gumu au maswali ya Hoja ya Nguvu - kazi nzima inatatuliwa na chaguo la kukokotoa moja.

  • Jinsi ya kutumia vitendakazi vya safu mpya vya nguvu vya Excel: FILTER, SORT, UNIC
  • Kubadilisha na kusafisha maandishi kwa chaguo la kukokotoa SUBSTITUTE
  • Kuunda makro na vitendaji vilivyoainishwa na mtumiaji (UDFs) katika VBA

Acha Reply