LAMBDA est Excel's New Super Function

In momento, Microsoft Praecedo officinae officinae paene quingentas habet functiones praesto per fenestram Veneficus - button fx in formula bor. Hoc est honestissimum institutum, sed tamen fere omnis usor citius aut serius incidit in condicionem in qua hic index munus non habet quod indiget – simpliciter quia non est in Excel.

Hucusque unicus modus solvendi hanc quaestionem macros erat, id est scribens munus tuum usoris definitum (UDF = User Definitum Function) in Visual Basic, quod opportunas artes programmandi requirit et interdum non facile est. Nihilominus, Officio Novissimo 365 updates, condicio in melius mutata est - speciale munus "involucrum" additum est Excel LAMBDA. Suo adiuvante, munus munus tuum creandi facile et pulchre iam solvitur.

Intueamur principium usus in hoc exemplo.

Ut maxime verisimile scis, Excel munera habet aliquot dies parsing, quae numerum diei, mensis, septimanae et anni pro die dato determinare tibi permittunt. Sed aliqua ratione non est munus, quod numerus determinat quadrantem, qui etiam saepe necessarius est, ius? Sit scriptor vitium hoc figere et creare cum LAMBDA proprium novum munus solvere hanc quaestionem.

Gradus 1. scribe formula

Incipiamus ab eo quod solito more manually scribemus formulam in scheda cellula quae quid opus est computat. In quadrante numero hoc fieri potest, verbi gratia, sic:

LAMBDA est Excelsus Novae Super Function

Gradus 2. involventes in LAMBDA et tentantes

Nunc tempus est novum LAMBDA munus applicare ac formulam nostram in eo involvere. Munus syntaxis talis est:

= LAMBDA(Variable1; Variable2; ... VariableN ; expressio)

ubi nomina unius vel plurium variabilium primo recensentur, et ultimum argumentum semper est formula vel dictio calculata quibus utitur. Varia nomina non debent videre sicut inscriptiones cellulae nec punctis continere debent.

In nostro casu una tantum variabilis erit dies pro quo computamus numerum quadrantem. Vocemus variabiles, dic d. Deinde nostram formulam involventes in functione LAMBDA et inscriptione cellae originalis A2 substituta nomine ficticio variabili, habetur:

LAMBDA est Excelsus Novae Super Function

Nota quaeso quod post talem transformationem formulam nostram (re vera correctam) errorem producere incepit, quia nunc origo primigenia e cell A2 ad eam non transfertur. Ad probationem et confidentiam, rationes ad eam transire potes addendo eas post munus LAMBDA parenthesi notatis:

LAMBDA est Excelsus Novae Super Function

Gradus 3. crea nomen

Nunc facilisis ac tellus a fringilla. aperimus nomen Manager Tab formula: (Formulae - Name Manager) et novum nomen cum button Create (Create). Ascende mecum et ingredere nomen functionis nostrae futuri (ex. gr. Nomkvarta) et in agro Link (Reference) diligenter effingo ex formula talea et crustulum munus nostrum LAMBDAsolum sine ultimo argumento (A2);

LAMBDA est Excelsus Novae Super Function

Omnia. Post clicking in OK munus creatum adhiberi potest in quavis cellula in quavis scheda huius operis;

LAMBDA est Excelsus Novae Super Function

Utere in aliis libris

Quia creatus est LAMBDA Cum functiones usoris definitae sint, re vera delata nominata, facile eas promptu facere potes non solum in elaboratione hodierna. Sat erit cellulam cum munere exscribere et eam ubivis in scheda alterius fasciculi conglutinare.

LAMBDA et dynamica vestit

Consuetudo munera cum functione creata sunt LAMBDA opus feliciter sustinent cum novis dynamicis vestit et eorum functionibus (LIQUO, UNK, GRADUS) Microsoft Praecedo in MMXX addidit.

Dicamus nos velle creare novum munus usoris definitum, qui duos libros compararet et differentiam eorum redderet - elementa illa ex primo indice quae in secundo non sunt. Nonne opus vitae est? Antea ad hoc utebantur vel functionibus la . VPR (VLOOKUP), or PivotTables, or Power Query queries. Nunc una formula facere potes:

LAMBDA est Excelsus Novae Super Function

In versione Anglica erit:

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

Hic munus COUNTIF numerum eventum cujusvis elementi primi in secundo album, ac dein functionem LIQUO eos solos eligit qui haec gesta non habuerunt. Hanc structuram in involvendo LAMBDA et nominatum ex eo nomine, e.g. SEARCH DISTRIBUTIO - munus opportunum dabimus quod redit eventum comparandi duas listas in forma dynamici ordinatae:

LAMBDA est Excelsus Novae Super Function

Si fons notitiae ordinariae non sunt, sed mensae "doloris", munus nostrum etiam sine problematibus obire faciet;

LAMBDA est Excelsus Novae Super Function

Aliud exemplum est textum dynamice scindendi convertendo ad XML ac deinde cellam dividendo per cellulam utendo munus FILTER.XML nuper parsed. Ut omni tempore hanc formulam complexam manualem non repraesentet, facilior erit eam in LAMBDA involvere et dynamicam extensionem in ea creare, munus scilicet novum compactum et opportunum nominans, exempli gratia, RAZDTEXT:

LAMBDA est Excelsus Novae Super Function

Prima huius functionis ratio erit cellula cum textu fonte, et secundo charactere separatore, et redibit effectus in forma dynamici ordinatae horizontalis. In codice functionis talis erit:

= LAMBDA(t;d; TRANSPONO (FILTER.XML(""&SUBSTITUTUS(t;d? '«)&»";"//Y")))

Index exemplorum sine fine est - in omni situ ubi saepe eandem formulam longam et gravia- tem ingredi debebis, munus agnitionis vitam conspicue faciliorem reddet.

Enumeratio recursiva characterum

Omnia exempla praecedentia unum tantum, maxime conspicuum, latus functionis LAMBDA ostenderunt - usum eius ut "involucrum" in eo formulis longis involventes et eorum initus simplificantes. Re vera, LAMBDA aliam multo profundiorem habet partem quae eam in linguam programmandi paene plenam vertit.

Re vera principaliter momentum functionum LAMBDA notum est eas efficere posse recursus — Logica de calculis, quando in processu calculi munus se vocat. Ab habitu, sonare potest creepy, sed in programmatibus recursus communis est. Etiam in macros in Visual Basic, id efficere potes, et nunc, ut vides, pervenit ad Excel. Studeamus hanc artem intellegere cum exemplo practico.

Puta munus usoris definitum creare velimus, qui omnia notis datis e fonte textu tolleret. Utilitas talis functionis, puto, non opus est probare – commodissimum fore patet suillo litterato input data cum eius ope, ius?

Attamen, praemissis exemplis non-recurrentibus, duae difficultates nobis manent.

  1. Nomen officii nostri debebimus ascendere antequam eius codicem scribere incipiamus, quia in eo hoc nomen munus ipsum iam appellabimus.
  2. Talem munus recursivum ingrediens in cellam et eam debugging definiendo argumenta uncis post LAMBDA (ut antea diximus) non laborabit. Munus creare statim debebis "a scabere" in nomen Manager (Name Manager).

Munus nostrum vocemus, inquam, MUNDUM et velimus duas rationes habere - textum purgandum et indicem characterum exclusionum sicut chorda textualis:

LAMBDA est Excelsus Novae Super Function

Creamus, sicut antea fecimus, in tab formula: в Nomen procurator nominatus range, nomen illud CLARUS et in campum ingredior Range sequenti constructione:

= LAMBDA(t;d; IF(d="";t; SERENUS(T; RELIGIO(d);"");MED(d;2;255))))

Hic t variabilis est ut textus originalis aperiatur, et d index characterum delendus est.

Haec omnia sic habent:

I iteration

Fragmentum SUBSTITUTUM (t; EGRESSUS(d);”»), ut coniicere possis, characterem primam e charactere sinistro e statuto d delevit in textu t fonte inani textui lino, id est removente " A». Ex media parte, consequimur;

Vsh zkz n 125 rubles.

I iteration

Munus deinde se vocat et initus (primum argumentum) recipit residuas post purgationem in priori gradu, et secundum argumentum est linea characterum exclusis non a primo, sed a secundo charactere incipiens, scilicet "BVGDEEGZIKLMNOPRSTUFHTSCHSHSHCHYYYYYA. , sine initiali “A” – hoc in MEDIUS functione fit. Munus ut prius accipit primam indolem e reliquorum reliquorum (B) eamque in textu sibi dato (Zkz n 125 rubles) inani filo sumit - ut medium exitum obtinet;

125 ru.

I iteration

Munus iterum se vocat, accepto ut primo argumento id quod superest ad purgandum iterationem antecedente (Bsh zkz n 125 ru.), et ut in secundo argumento, characterum characterum exclusorum numerus ab uno charactere magis truncatus est. sinister, id est "VGDEEGZIKLMNOPRSTUFHTSCHSHSHCHYYYYUYA.," sine initiali "B". Deinde iterum accipit primam characterem a sinistro (B) ab hoc statuto et removet e textu - consequitur:

sh zkz n 125 ru.

Et sic porro – Spero te habere ideam. Cum unaquaque iteratione, elenchus characterum ablatis in sinistro mutilum erit, et characterem sequentem ab inani statuto quaesibimus ac restituemus.

Cum omnes characteres currunt, opus est ansa exire - hoc munus modo functio peragitur IF (SI)in quo consilium nostrum involvitur. Si notae non sunt relictae ad delendum (d = ""), munus non iam se vocare debet sed textum simpliciter purgandum (variabile) in forma finali reddere debet.

Recursive iteratio cellularum

Similiter in data parte cellularum enumerationem recursivam efficere potes. Puta munus nominatum velimus creare REPLACEMENT LIST * ad substitutionem fragmentorum in fonte textu secundum aliquod album refertivum. Eventus debet videri sic:

LAMBDA est Excelsus Novae Super Function

Illae. ad munus nostrum REPLACEMENT LIST * Tria erunt argumenta;

  1. cellula cum textu ad processum (source oratio)
  2. cellula prima columnae cum valoribus ad quaerendum a lookup
  3. cellula prima columnae cum valores subrogando a lookup

Munus debet a summo ad imum in indicem ire ac succedere omnia optiones columnae sinistrae Invenire ad bene respondentem dextra columna Substitutus. Hoc efficere potes cum sequenti functione lambda recursiva:

LAMBDA est Excelsus Novae Super Function

Hic, variabilis t textum primigenium e columna sequenti cell Address& variabiles n et z designant cellulas primas in columnis Invenire и Substitutus, Respectively.
Sicut in exemplo praecedente, hoc munus primum reponit textum originalem cum functione SUBSTITUTUS (SUBSTITUTUS) notitia prima linea presul (ie* SPb*on St. Petersburg) et deinde se ipsum vocat, sed cum traiecto in indicem usque ad lineam sequentem (reponit St. Petersburg on St. Petersburg). Deinde iterum se vocat trabea in - iam et reponit Petrus on St. Petersburg etc.

Derivare ad singulas iteratio est implemented per vexillum excellens munus ARBITRIUM (offset)Quae in hoc casu tria argumenta habet - range originalis, ordo trabea (1) et columna trabea (0).

Cum primum finem directorii (n = "") attingimus, recursus finiendus est - desinimus nosmetipsos vocare et ostendere ea quae congesta sunt postquam omnia supplementa in fonte textui variabilis t.

Id omne. Non insidiose utentes vel potentia Query queries – totum munus uno munere solvitur.

  • Quomodo novis muneribus dynamicis ordinatis utendum Praecedo: FILTER, SORT, UNIC
  • Repositoque ac purgat textum cum substituto functionis
  • Partum utentis et user definitae functiones (UDFs) in VBA

Leave a Reply