Yaliyomo
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:
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:
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:
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):
Kila kitu. Baada ya kubofya OK kitendakazi kilichoundwa kinaweza kutumika katika seli yoyote kwenye laha yoyote ya kitabu hiki cha kazi:
Tumia katika vitabu vingine
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:
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:
Ikiwa data ya chanzo sio ya kawaida, lakini meza "smart", kazi yetu pia itashughulikia bila shida:
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:
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(“
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.
- Tutalazimika kuja na jina la kazi yetu kabla ya kuanza kuandika msimbo wake, kwa sababu ndani yake, jina hili tayari litatumika kuita kazi yenyewe.
- 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:
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:
Wale. kwenye hafla yetu ORODHA YA KUBADILISHA kutakuwa na hoja tatu:
- seli iliyo na maandishi ya kuchakatwa (anwani ya chanzo)
- seli ya kwanza ya safu wima yenye thamani za kutafuta kutoka kwenye utafutaji
- 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:
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