LAMBDA Excel-en Super Funtzio Berria da

Momentuz, Microsoft Excel-ek ia bostehun lan-orrien funtzio ditu eskuragarri Funtzioen Morroia leihoaren bidez - botoia fx formula barran. Oso multzo duina da, baina, hala ere, ia erabiltzaile guztiek lehenago edo beranduago topatzen dute zerrenda honek behar duen funtzioa ez duen egoerarekin, besterik gabe, Excel-en ez dagoelako.

Orain arte arazo hau konpontzeko modu bakarra makroak ziren, hau da, erabiltzaileak definitutako funtzio propioa (UDF = User Defined Function) Visual Basic-en idaztea, programazio trebetasun egokia eskatzen duena eta, batzuetan, ez da batere erraza. Hala ere, Office 365-en azken eguneratzeekin, egoera hobera aldatu da - Excel-en "bilgarri" funtzio berezi bat gehitu da. Lambda. Bere laguntzarekin, zure funtzioak sortzeko zeregina erraz eta ederki konpontzen da orain.

Ikus dezagun bere erabileraren printzipioa hurrengo adibidean.

Seguruenik dakizuenez, Excel-ek hainbat data analizatzeko funtzio ditu, data jakin baterako egun, hilabete, aste eta urte kopurua zehazteko aukera ematen dutenak. Baina arrazoiren batengatik ez dago hiruhilekoaren kopurua zehazten duen funtziorik, eta hori ere askotan beharrezkoa da, ezta? Konpon dezagun gabezia hau eta sortu Lambda arazo hau konpontzeko funtzio berria.

1. urratsa. Idatzi formula

Has gaitezen eskuz ohiko moduan orri-gelaxka batean behar duguna kalkulatzen duen formula bat idatziko dugula. Hiruhileko zenbakiaren kasuan, hau egin daiteke, adibidez, honela:

LAMBDA Excels Super Funtzio Berria da

2. urratsa. LAMBDA-n bildu eta probak

Orain LAMBDA funtzio berria aplikatzeko eta gure formula bertan biltzeko garaia da. Funtzioaren sintaxia honako hau da:

=LAMBDA(Aldagaia 1; Aldagaia 2; ... AldagaiaN ; Adierazpen)

non aldagai baten edo gehiagoren izenak zerrendatzen dira lehenik, eta azken argumentua beti da horiek erabiltzen dituen formula edo adierazpen kalkulatua. Aldagaien izenek ez dute gelaxka-helbideen itxurarik izan behar eta ez dute punturik eduki behar.

Gure kasuan, aldagai bakarra egongo da: hiruhilekoaren zenbakia kalkulatzen dugun data. Dei diezaiogun aldagaiari, demagun, d. Ondoren, gure formula funtzio batean biltzea Lambda eta jatorrizko A2 gelaxkaren helbidea fikziozko aldagai-izen batekin ordezkatuz, lortuko dugu:

LAMBDA Excels Super Funtzio Berria da

Kontuan izan eraldaketa horren ondoren, gure formula (hain zuzen ere, zuzena!) akats bat sortzen hasi zela, orain A2 gelaxkako jatorrizko data ez baita bertara transferitzen. Proba egiteko eta konfiantza izateko, argumentuak pasa diezazkiokezu funtzioaren ondoren gehituz Lambda parentesi artean:

LAMBDA Excels Super Funtzio Berria da

3. urratsa. Sortu izen bat

Orain zati erraza eta dibertigarria. Irekitzen dugu Izen kudeatzailea fitxa formula (Formulak — Izen-kudeatzailea) eta sortu izen berri bat botoiarekin Sortu (Sortu). Asmatu eta idatzi etorkizuneko funtziorako izen bat (adibidez, Nomkvartala), eta eremuan Link (Erreferentzia) arretaz kopiatu formula-barratik eta itsatsi gure funtzioa Lambda, azken argumenturik gabe (A2):

LAMBDA Excels Super Funtzio Berria da

Dena. Sakatu ondoren OK sortutako funtzioa lan-koadernoko edozein gelaxkatan erabil daiteke:

LAMBDA Excels Super Funtzio Berria da

Erabili beste liburu batzuetan

Sortu delako Lambda Erabiltzaileak definitutako funtzioak, hain zuzen ere, izendatutako barrutiak direnez, erraz erabil ditzakezu uneko lan-liburuan ez ezik. Nahikoa izango da funtzioarekin gelaxka kopiatzea eta beste fitxategi baten fitxan edozein lekutan itsatsi.

LAMBDA eta array dinamikoak

Funtzio batekin sortutako funtzio pertsonalizatuak Lambda Array dinamiko berriekin eta haien funtzioekin lana arrakastaz onartzen du (FILTER, UNIK, GRADE) Microsoft Excel-era gehitu zen 2020an.

Demagun erabiltzaileak definitutako funtzio berri bat sortu nahi dugula, bi zerrendak alderatu eta haien arteko aldea itzuliko lukeena, bigarrenean ez dauden lehen zerrendako elementuak. Bizitzako lana, ezta? Aurretik, horretarako bai funtzioak a la erabiltzen zituzten VPR (VLOOKUP), edo taula dinamikoak edo Power Query kontsultak. Orain formula batekin egin dezakezu:

LAMBDA Excels Super Funtzio Berria da

Ingelesezko bertsioan hau izango da:

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

Hemen funtzioa COUNTIF lehen zerrendako elementu bakoitzaren agerraldi kopurua zenbatzen du bigarrenean, eta gero funtzioa FILTER agerraldi horiek izan ez dituztenak bakarrik hautatzen ditu. Egitura hau sartuz Lambda eta izen batekin oinarritutako barruti bat sortzea, adibidez, BILATZAILEA BANAKETA – Bi zerrendak matrize dinamiko baten moduan konparatzearen emaitza itzultzen duen funtzio eroso bat lortuko dugu:

LAMBDA Excels Super Funtzio Berria da

Iturburu-datuak taula arruntak ez badira, baizik eta "adimendunak" badira, gure funtzioak ere arazorik gabe egingo du aurre:

LAMBDA Excels Super Funtzio Berria da

Beste adibide bat testua modu dinamikoan banatzea da, XML bihurtuz eta, ondoren, gelaxka gelaxka analizatuz duela gutxi analizatu dugun FILTER.XML funtzioa erabiliz. Formula konplexu hori eskuz ez erreproduzitzeko, errazagoa izango da LAMBDAn biltzea eta horretan oinarritutako sorta dinamiko bat sortzea, hau da, funtzio trinko eta eroso berri bat, RAZDTEXT izena jarriz, adibidez:

LAMBDA Excels Super Funtzio Berria da

Funtzio honen lehen argumentua sorburu-testua duen gelaxka izango da, eta bigarrena, bereizle-karakterea, eta emaitza matrize dinamiko horizontal baten moduan itzuliko du. Funtzio-kodea honako hau izango da:

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

Adibideen zerrenda amaigabea da - askotan formula luze eta astuna sartu behar duzun edozein egoeratan, LAMBDA funtzioak bizitza nabarmen erraztuko du.

Karaktereen zenbaketa errekurtsiboa

Aurreko adibide guztiek LAMBDA funtzioaren alde bakarra, nabarmenena, erakutsi dute: formula luzeak biltzeko eta sarrera sinplifikatzeko "bilgarri" gisa erabiltzea. Izan ere, LAMBDAk badu beste alde bat, askoz sakonagoa, ia erabateko programazio-lengoaia bihurtzen duena.

Izan ere, LAMBDA funtzioen funtsezko ezaugarri bat horiek inplementatzeko gaitasuna da errekurtsio – kalkuluen logika, kalkulu-prozesuan funtzioak bere buruari deitzen dionean. Ohituratik, beldurgarria dirudi, baina programazioan, errekurtsioa gauza arrunta da. Visual Basic-eko makroetan ere, inplementa dezakezu, eta orain, ikusten duzun bezala, Excelera iritsi da. Saia gaitezen teknika hau ulertzen adibide praktiko batekin.

Demagun erabiltzaileak definitutako funtzio bat sortu nahi dugula, emandako karaktere guztiak sorburu-testutik kenduko dituena. Funtzio horren erabilgarritasuna, nire ustez, ez duzu frogatu beharrik; oso erosoa izango litzateke bere laguntzarekin zabortutako sarrerako datuak garbitzea, ezta?

Hala ere, aurreko adibide ez-errekurtsiboekin alderatuta, bi zailtasun ditugu zain.

  1. Bere kodea idazten hasi baino lehen gure funtzioaren izen bat asmatu beharko dugu, bertan, izen hori dagoeneko erabiliko baita funtzioari berari deitzeko.
  2. Halako funtzio errekurtsibo bat gelaxka batean sartu eta LAMBDAren ondoren argumentuak parentesi artean zehaztuz araztea (lehenago egin genuen bezala) ez du funtzionatuko. Funtzio bat sortu beharko duzu berehala "hutsetik". Izen kudeatzailea (Izen-kudeatzailea).

Dei diezaiogun gure funtzioari, esate baterako, GARBITU eta bi argumentu edukitzea nahiko genuke: garbitu beharreko testua eta baztertutako karaktereen zerrenda testu-kate gisa:

LAMBDA Excels Super Funtzio Berria da

Sortu dezagun, lehen egin genuen bezala, fitxan formula в Izenaren kudeatzailea izendatutako barrutia, izendatu GARBITU eta sartu eremuan Range ondorengo eraikuntza:

=LAMBDA(t;d;BALDIN (d=””;t;GARBITU(ORDEZKOA(t;EZKERRA(d););””);ERDIA(d;2;255))))

Hemen t aldagaia garbitu beharreko jatorrizko testua da, eta d ezabatu beharreko karaktereen zerrenda.

Honela funtzionatzen du guztiak:

1. errepikapena

ORDEZTEKO(t;EZKER(d);””) zatiak, asma dezakezun bezala, iturburuko testuan ezabatu beharreko d multzoko ezkerreko karakterearen lehenengo karakterea ordezkatzen du t testu-kate huts batekin, hau da, “” kentzen du. A”. Tarteko emaitza gisa, lortuko dugu:

Vsh zkz n 125 errublo.

2. errepikapena

Ondoren, funtzioak bere buruari deitzen dio eta sarrera gisa (lehen argumentuak) aurreko urratsean garbitu ondoren geratzen dena jasotzen du, eta bigarren argumentua lehenengotik ez, bigarren karakteretik hasten den baztertutako karaktere-katea da, hau da, “BVGDEEGZIKLMNOPRSTUFHTSCHSHSHCHYYYYA. ," hasierako "A" gabe - hori MID funtzioak egiten du. Lehen bezala, funtzioak gainerakoen ezkerreko lehen karakterea hartzen du (B) eta ematen zaion testuan (Zkz n 125 errublo) kate huts batekin ordezkatzen du; tarteko emaitza gisa lortzen dugu:

125 ru.

3. errepikapena

Funtzioak bere buruari berriro deitzen dio, lehen argumentu gisa jasoz aurreko iterazioan garbitu beharreko testutik geratzen dena (Bsh zkz n 125 ru.), Eta bigarren argumentu gisa, karaktere bat gehiago moztutako baztertutako karaktere multzoa. ezkerrekoa, hau da, “VGDEEGZIKLMNOPRSTUFHTSCHSHSHCHYYYYUYA.”, hasierako “B” gabe. Ondoren, berriro multzo honetako ezkerreko lehenengo karakterea (B) hartzen du eta testutik kentzen du - lortzen dugu:

sh zkz n 125 ru.

Eta abar - Ideia jasotzea espero dut. Iterazio bakoitzarekin, kendu beharreko karaktereen zerrenda ezkerrean moztuko da, eta multzoko hurrengo karakterea hutsune batekin bilatu eta ordezkatuko dugu.

Karaktere guztiak agortzen direnean, begiztatik irten beharko dugu; funtzioak betetzen du funtzio hori IF (BADA), zeinetan gure diseinua bilduta dago. Ezabatzeko karaktererik ez badago (d=””), orduan funtzioak ez luke bere buruari deitu behar, baizik eta garbitu beharreko testua (t aldagaia) azken forman itzuli beharko luke.

Zelulen iterazio errekurtsiboa

Era berean, barruti jakin bateko gelaxken zenbaketa errekurtsibo bat inplementa dezakezu. Demagun izena duen lambda funtzio bat sortu nahi dugula ORDEZKO ZERRENDA iturburu-testuaren zatiak handizkako ordezkapenerako, erreferentzia-zerrenda jakin baten arabera. Emaitza honelakoa izan beharko litzateke:

LAMBDA Excels Super Funtzio Berria da

Horiek. gure funtzioan ORDEZKO ZERRENDA hiru argudio izango dira:

  1. prozesatu beharreko testua duen gelaxka (iturburu helbidea)
  2. zutabe baten lehenengo gelaxka bilaketatik bilatzeko balioak dituena
  3. zutabearen lehen gelaxka bilaketaren ordezko balioekin

Funtzioak direktorioa goitik behera joan behar du eta ezkerreko zutabeko aukera guztiak sekuentzialki ordezkatu behar ditu Aurkitu eskuineko zutabeko dagozkien aukeretara Ordezko. Hau inplementatu dezakezu lambda funtzio errekurtsibo honekin:

LAMBDA Excels Super Funtzio Berria da

Hemen, t aldagaiak hurrengo zutabeko gelaxkako jatorrizko testua gordetzen du Helbidea, eta n eta z aldagaiek zutabeetako lehen gelaxketara seinalatzen dute Aurkitu и Ordezko, hurrenez hurren.
Aurreko adibidean bezala, funtzio honek jatorrizko testua funtzioarekin ordezkatzen du lehenik ORDUTEGIA (ORDENAK) direktorioaren lehen lerroko datuak (hau da SPbon San Petersburgo), eta gero bere buruari deitzen dio, baina direktorioan hurrengo lerrora jaitsiz (hau da, ordezkatzen du San Petersburgo on San Petersburgo). Ondoren, berriro deitzen dio bere buruari desplazamendu bat behera eginez, eta dagoeneko ordezkatzen du Peter on San Petersburgo eta abar.

Iterazio bakoitzean behera egin behar da, excel funtzio estandar batek ezartzen du BOTATZEA (OFFSET), kasu honetan hiru argumentu ditu: jatorrizko barrutia, errenkada-aldaketa (1) eta zutabe-aldaketa (0).

Bada, direktorioaren amaierara iritsi bezain laster (n = “”), errekurtsioa amaitu behar dugu – geure buruari deitzeari utzi eta ordezkapen guztien ondoren t iturburu-testuaren aldagaian pilatutakoa bistaratzen dugu.

Hori da dena. Ez dago makro delikatua edo Power Query kontsultarik - zeregin osoa funtzio batek konpontzen du.

  • Nola erabili Excel-en array-funtzio dinamiko berriak: FILTER, SORT, UNIC
  • ORDEZKO funtzioarekin testua ordezkatzea eta garbitzea
  • Makroak eta erabiltzaileak definitutako funtzioak (UDF) sortzea VBAn

Utzi erantzun bat