国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
遞歸lambda功能
遞歸lambda的示例以刪除不需要的字符
如何在Excel中寫遞歸lambda
創(chuàng)建核心公式
將核心公式轉(zhuǎn)換為lambda功能
使lambda函數(shù)恢復(fù)自身遞歸
命名您的lambda定義功能
如何在Excel中使用遞歸lambda
了解遞歸
更多遞歸lambda功能的示例
示例1。刪除不需要的字符并修剪額外的空間
示例2。用同一字符替換多個(gè)字符
示例3。一次將多個(gè)值替換為其他值
遞歸lambdas vs. VBA用戶定義的功能
遞歸lambda刪除多個(gè)字符
用戶定義的功能以刪除多個(gè)字符遞歸
用戶定義的函數(shù)以刪除多個(gè)字符非恢復(fù)的功能
練習(xí)工作簿下載
首頁(yè) 專題 excel Excel中的遞歸lambda功能與示例

Excel中的遞歸lambda功能與示例

Mar 31, 2025 pm 01:54 PM

本教程的目的是解釋遞歸功能的概念,并證明在Excel中創(chuàng)建遞歸lambdas的通用方法。我們將深入探索各個(gè)方面,以使您可以輕松地在工作表中遵循和復(fù)制。

隨著Lambda功能的引入,Excel中的遞歸計(jì)算已成為任何人,而不僅僅是VBA程序員。簡(jiǎn)而言之,您現(xiàn)在可以構(gòu)建表現(xiàn)得像編程語(yǔ)言的公式,并讓您以如此少,如此快的速度取得如此多的成就:)

請(qǐng)記住,本教程中討論的示例暗示您已經(jīng)知道Lambda的語(yǔ)法和基本用途。如果不是這樣,它就可以從要點(diǎn)開(kāi)始:如何在Excel中寫和使用lambda。

遞歸lambda功能

為了確保每個(gè)人都在同一頁(yè)面上,讓我們首先確定什么是遞歸功能。

在計(jì)算機(jī)科學(xué)中,遞歸是一種解決函數(shù)直接或間接調(diào)用自己的問(wèn)題的方法。這樣的功能稱為遞歸?;旧?,遞歸函數(shù)通過(guò)迭代起作用,并通過(guò)解決相同問(wèn)題的較小實(shí)例找到解決較大問(wèn)題的解決方案。

當(dāng)前,Lambda是唯一支持遞歸的Excel功能,使您能夠?yàn)闊o(wú)編碼的復(fù)雜問(wèn)題創(chuàng)建緊湊而優(yōu)雅的解決方案。

在VBA中,遞歸通常是使用A for…下一步或循環(huán)時(shí)進(jìn)行的。 lambda通常依靠IF函數(shù)來(lái)測(cè)試布爾條件,如果條件為真或錯(cuò)誤,則反復(fù)出現(xiàn)。

這是遞歸lambda功能的結(jié)構(gòu),其最簡(jiǎn)單的形式:

= lambda(x,y,…, '聲明參數(shù),如果(logical_test, '測(cè)試條件mylambda(), 'recurse如果條件評(píng)估為true value_if_false) '如果條件評(píng)估為false,則退出

關(guān)鍵點(diǎn)是停止遞歸電話永遠(yuǎn)繼續(xù)。為此,您應(yīng)該提供結(jié)局案例(也稱為停止案例基本案例)。如果沒(méi)有提供出口點(diǎn),則公式將不斷迭代,直到您的計(jì)算機(jī)崩潰為止,只是開(kāi)玩笑,它會(huì)拋出#num!錯(cuò)誤。

與非恢復(fù)功能相比,遞歸lambdas更難編寫,測(cè)試和調(diào)試。它類似于舊的雞肉和雞蛋謎語(yǔ) - 為了使功能正常工作,必須自稱為自己。要調(diào)用自己,該功能必須正常工作:)

遞歸lambda的示例以刪除不需要的字符

從外部來(lái)源導(dǎo)入數(shù)據(jù)時(shí),垃圾字符通常會(huì)潛入,您需要以某種方式找到一種清潔數(shù)據(jù)的方法。

替換所有功能可以通過(guò)無(wú)需替換給定字符的所有出現(xiàn),但一次只能處理一個(gè)字符。

更快,更方便的是列出某些單元格中的所有不需要的角色,并使用公式一口氣消除它們。遞歸lambda正是您所需要的:

=LAMBDA(data, chars, IF(chars"", RemoveChars(SUBSTITUTE(data, LEFT(chars, 1), ""), RIGHT(chars, LEN(chars) -1)), data))

我們的自定義lambda函數(shù)命名為removeChars ,它需要兩個(gè)輸入?yún)?shù):

  • 數(shù)據(jù)- 一個(gè)細(xì)胞或要清潔的細(xì)胞范圍。
  • 字符- 不需要的字符要?jiǎng)h除??梢砸晕谋咀址騿卧褚玫男问教峁?。在單元格中,除非您也要消除空間,否則應(yīng)在沒(méi)有空格的情況下列出字符。

在高水平上,這是函數(shù)的作用:

RemoveChars函數(shù)循環(huán)通過(guò)排除列表( chars ),并一次清除一個(gè)字符。在每個(gè)遞歸調(diào)用之前,IF函數(shù)評(píng)估其余的字符。如果字符串不是空的(chars “”),則該函數(shù)會(huì)自調(diào)用。一旦處理了最后一個(gè)字符,迭代過(guò)程就會(huì)完成 - 該公式以當(dāng)前形式和退出返回數(shù)據(jù)。

反向邏輯也將起作用:如果chars字符串為空(chars =“”),則返回當(dāng)前數(shù)據(jù)并退出;否則,請(qǐng)調(diào)用removeChars函數(shù):

=LAMBDA(data, chars, IF(chars="", data, RemoveChars(SUBSTITUTE(data, LEFT(chars, 1), ""), RIGHT(chars, LEN(chars) -1))))

無(wú)論您選擇哪種方法,結(jié)果都將完全相同:

Excel中的遞歸lambda功能與示例

提示。通過(guò)正則表達(dá)式可以輕松完成相同的任務(wù)。有關(guān)更多詳細(xì)信息,請(qǐng)參閱Excel Regex刪除特殊字符。

如何在Excel中寫遞歸lambda

我想從免責(zé)聲明開(kāi)始:)沒(méi)有記錄的在Excel中構(gòu)建遞歸lambdas的方法,鑒于該功能是全新的,這是可以闡明的。我將分享自己的方式,這可能對(duì)您有幫助。

創(chuàng)建核心公式

通常,您首先要編寫模仿Lambda功能所需行為的核心公式。在我們的情況下,最終的目標(biāo)是無(wú)需替換特定的角色,而Excel已經(jīng)為此提供了理想的工具 - 替代功能:

替代(text,old_text,new_text,[instance_num])

為了替代,我們需要提供:

  • 文字- 替換字符的文字。就我們而言,這是A2中的文本字符串。
  • old_text-要替換的字符。我們需要檢查D2中的每個(gè)字符,并且有理由從最左邊的角色開(kāi)始。左功能可以輕松為我們獲?。?p> LEFT(D2, 1)

  • new_text-用替換old_text的字符。顯然,這是一個(gè)空字符串(“”)。
  • instance_num是可選的,在我們的情況下不需要,因此省略了。

結(jié)果,我們的核心公式采用此形式:

=SUBSTITUTE(A2, LEFT(D2, 1), "")

Excel中的遞歸lambda功能與示例

由于替代只能一次進(jìn)行一次替換,因此必須執(zhí)行D2中的“排除列表”中的字符多次。問(wèn)題是 - 我們?nèi)绾螐?qiáng)迫它處理下一個(gè)角色?這是答案:

在每次迭代中,我們將從左側(cè)剝離一個(gè)角色,即已經(jīng)看過(guò)的角色。與Len結(jié)合使用的正確功能很容易做到這一點(diǎn):

=RIGHT(D2, LEN(D2) -1)

請(qǐng)注意,每個(gè)隨后的替代者都使用上一個(gè)替代的結(jié)果作為文本參數(shù),即它使替換不是在原始字符串(A2)中,而是在先前的替代函數(shù)(B2)返回的字符串中:

Excel中的遞歸lambda功能與示例

將核心公式轉(zhuǎn)換為lambda功能

如您所記得的那樣,我們的自定義功能應(yīng)該被命名為removeChars ,它將有2個(gè)參數(shù):數(shù)據(jù)字符

您的工作是指示功能如何計(jì)算每個(gè)參數(shù):

  • 數(shù)據(jù)- 替換字符的字符串。它由替代公式提供。
  • 字符- 要?jiǎng)h除的字符。它由正確的公式提供。

您要做的就是簡(jiǎn)單地將上面討論的兩個(gè)公式放置在removechars函數(shù)的內(nèi)部,以逗號(hào)或用于分離excel中函數(shù)參數(shù)的任何字符(由在區(qū)域設(shè)置中設(shè)置的列表分隔符確定)。

RemoveChars(SUBSTITUTE(A2, LEFT(D2, 1), ""), RIGHT(D2, LEN(D2) -1))

請(qǐng)記住,lambda在參數(shù)而不是單元格引用上運(yùn)行,下一步是將A2更改為數(shù)據(jù),而D2則將D2更改為Chars

RemoveChars(SUBSTITUTE(data, LEFT(chars, 1), ""), RIGHT(chars, LEN(chars) -1))

RemoveChars功能已完成??杀氖?,此時(shí)無(wú)法進(jìn)行測(cè)試,我們只能依靠先前測(cè)試的結(jié)果,并在需要時(shí)進(jìn)行調(diào)試。

使lambda函數(shù)恢復(fù)自身遞歸

這是將“理論公式”變成工作解決方案的關(guān)鍵部分。

與任何自定義lambda一樣,您從聲明參數(shù)開(kāi)始:

=LAMBDA(data, chars,

接下來(lái),您將評(píng)估一定條件,并取決于結(jié)果調(diào)用遞歸或退出。建立退出點(diǎn)是至關(guān)重要的考慮因素。如果您不這樣做,那么您的公式將無(wú)法正常工作,因?yàn)樗肋h(yuǎn)不會(huì)擺脫循環(huán)。

在我們的情況下,IF函數(shù)檢查字符列表是否不是空白(chars “”)。如果true(字符不是空的),我們將調(diào)用removeChars函數(shù)。如果false(字符為空),我們將其當(dāng)前表單和退出返回數(shù)據(jù)

這是通用方法:

=LAMBDA(data, chars, IF(chars"", RemoveChars(…), data))

這是其完整形式的真實(shí)公式:

=LAMBDA(data, chars, IF(chars"", RemoveChars(SUBSTITUTE(data, LEFT(chars, 1), ""), RIGHT(chars, LEN(chars) -1)), data))

另外,您可以檢查字符是否為空白(chars =“”)。如果是真的,請(qǐng)返回數(shù)據(jù)并退出;如果false通話removeChars。

概念:

=LAMBDA(data, chars, IF(chars="", data, RemoveChars(…)))

完整公式:

=LAMBDA(data, chars, IF(chars="", data, RemoveChars(SUBSTITUTE(data, LEFT(chars, 1), ""), RIGHT(chars, LEN(chars) -1))))

命名您的lambda定義功能

命名遞歸lambdas與命名他們的非征收同齡人沒(méi)有什么不同:

  1. CTRL 3快捷方式打開(kāi)名稱管理器,然后單擊“新” 。
  2. “新名稱”對(duì)話框中,執(zhí)行以下操作:
    • 名稱框中,鍵入函數(shù)的名稱: removeChars
    • 將范圍設(shè)置為工作簿。
    • 盒子中,粘貼您的lambda公式,以確保其以平等標(biāo)志開(kāi)頭。
    • 可選地,在評(píng)論框中輸入?yún)?shù)的描述,以供進(jìn)一步參考。
    • 單擊確定以保存您的新功能。

      Excel中的遞歸lambda功能與示例

如何在Excel中使用遞歸lambda

這是最簡(jiǎn)單的部分:)一旦您的lambda函數(shù)獲取名稱,就可以像其他任何本機(jī)功能一樣使用它。

從最終用戶的角度來(lái)看,我們的自定義函數(shù)的語(yǔ)法與以下方式一樣簡(jiǎn)單:

RemoveChars(數(shù)據(jù),字符)

例如,要清潔A2:A10(數(shù)據(jù))中的數(shù)據(jù),我們?cè)贒2( chars )中鍵入不需要的字符,然后在B2中輸入以下公式:

=RemoveChars(A2:A10, D2)

您可能知道,在Excel 356中,每個(gè)公式本質(zhì)上都是一個(gè)動(dòng)態(tài)的陣列公式。因此,將公式僅輸入一個(gè)單元格(B2),我們立即獲得所有結(jié)果(此行為稱為溢出)。

Excel中的遞歸lambda功能與示例

如果您喜歡傳統(tǒng)的“一個(gè)公式 - 一個(gè)單元格”的行為,請(qǐng)使用單元格引用進(jìn)行數(shù)據(jù)(A2),然后用$符號(hào)鎖定Chars單元格($ d $ 2),以防止其在將公式調(diào)低時(shí)更改:

=RemoveChars(A2, $D$2)

上面的公式用于B2,然后將其拖動(dòng)B10:

Excel中的遞歸lambda功能與示例

您可以將其直接作為文本字符串直接提供給公式:

=RemoveChars(A2:A10, "_^*/&%")

Excel中的遞歸lambda功能與示例

筆記。由于核心公式中使用的替代功能對(duì)病例敏感,因此我們的自定義功能將大寫和小寫字母視為不同的字符。如果要?jiǎng)h除某個(gè)字符,例如“ X”,無(wú)論字母案例如何,請(qǐng)?jiān)?em>字符字符串中同時(shí)包含“ X”和“ X”。

了解遞歸

理解遞歸lambdas的線索是確切地知道每次迭代會(huì)發(fā)生什么。在我們的示例中,有兩件事:

  • 上一個(gè)替代品的結(jié)果成為下一個(gè)呼叫的新數(shù)據(jù)參數(shù),就好像我們使用了嵌套的替代功能一樣。
  • 字符字符串由一個(gè)字符減少。您可以將其視為一種倒計(jì)時(shí)。一旦Chars字符串變?yōu)榭眨^(guò)程就會(huì)停止,該公式將以目前的形式返回數(shù)據(jù)作為最終結(jié)果。

下表可以幫助您更好地可視化遞歸過(guò)程:

Excel中的遞歸lambda功能與示例

更多遞歸lambda功能的示例

在以下示例中,我們將研究如何使用新功能擴(kuò)展現(xiàn)有的Lambda功能以根據(jù)您的需求進(jìn)行調(diào)整。

示例1。刪除不需要的字符并修剪額外的空間

除了各種無(wú)關(guān)的字符外,您的數(shù)據(jù)還可能包含過(guò)多的空間。為了擺脫它們,您可以像任何內(nèi)置功能一樣嵌套在裝飾中的內(nèi)心

=TRIM(RemoveChars(A2:A10, F2))

要查看效果,請(qǐng)比較B列和D中的結(jié)果。在后一種情況下,不僅要?jiǎng)h除不必要的字符,而且都被刪除了所有領(lǐng)先和落后空間,而內(nèi)部空間則減少到單詞之間的單個(gè)空間字符:

Excel中的遞歸lambda功能與示例

如果您不想每次都要筑巢,則可以在lambda本身內(nèi)部進(jìn)行一次設(shè)置:

=LAMBDA(data, chars, TRIM(IF(chars"", RemoveTrim(SUBSTITUTE(data, LEFT(chars, 1), ""), RIGHT(chars, LEN(chars) -1)), data)))

我們的改進(jìn)功能被命名為removetrim ,它的工作方式就像魅力:

=RemoveTrim(A2:A10, D2)

Excel中的遞歸lambda功能與示例

示例2。用同一字符替換多個(gè)字符

在某些情況下,用您指定的另一個(gè)字符替換一些不同的字符是有意義的。實(shí)際上,這是我們的RemoveChars函數(shù)實(shí)際上所做的 - 用一個(gè)空字符串(“”)代替指定的字符。但是,替換字符是硬編碼的,而我們要直接在公式中定義它。為了完成它,我們只需要在函數(shù)中添加另一個(gè)參數(shù),例如new_char 。

因此,我們的新功能,讓我們命名替換,將具有以下語(yǔ)法:

替換(數(shù)據(jù),字符,new_char)

為了將RemoveChars轉(zhuǎn)變?yōu)?em>替代eChaceChars ,有3個(gè)小編輯要進(jìn)行:

  • 定義3 rd參數(shù)-new_char 。
  • new_char替換硬編碼的空字符串(“”)。
  • new_char傳遞到替代方案作為第三個(gè)參數(shù)的功能。

結(jié)果,我們獲得了另一個(gè)有用的lambda來(lái)代替多個(gè)字符遞歸:

=LAMBDA(data, chars, new_char, IF(chars"", ReplaceChars(SUBSTITUTE(data, LEFT(chars), new_char), RIGHT(chars, LEN(chars)-1), new_char), data))

例如,如果您的供應(yīng)商突然更改其ID或SKUS格式,則可以使用此公式使用適當(dāng)?shù)囊粋€(gè)(E2)替換所有不適當(dāng)?shù)淖址‥1):

=ReplaceChars(A2:A6, E1, E2)

Excel中的遞歸lambda功能與示例

示例3。一次將多個(gè)值替換為其他值

此示例是一個(gè)之前的邏輯擴(kuò)展。這次,我們將替換整個(gè)單詞(或字符串),而不是單個(gè)字符,每個(gè)單詞都會(huì)有其自己的替換值。

由于舊值和新值將放置在單獨(dú)的單元格中(如下屏幕截圖所示),因此我們?cè)谏弦粋€(gè)示例中使用的正確函數(shù)無(wú)法使用。要循環(huán)遍歷舊的/新對(duì),我們需要找出其他東西。嗯,Excel中似乎有一個(gè)函數(shù),可以從給定的單元中移動(dòng)指定數(shù)量的行和列。是的,那是偏移!

通過(guò)建立的主要方法,編寫替換功能沒(méi)什么大不了的:

替換(數(shù)據(jù),舊,新)

對(duì)于數(shù)據(jù),我們僅以基本形式使用替代函數(shù),僅將舊值替換為新值:

SUBSTITUTE(data, old, new)

為了獲得值,我們將從列表上的最上方單元格開(kāi)始,然后在每次交互時(shí)向下移動(dòng)1行:

OFFSET(old, 1, 0)

為了獲得價(jià)值,我們將做完全相同,但是當(dāng)然,在列表中:

OFFSET(new, 1, 0)

最后,在IF的幫助下實(shí)現(xiàn)已經(jīng)熟悉的退出策略,您的新功能遞歸lambda已準(zhǔn)備就緒(請(qǐng)不要忘記在名稱管理器中命名:)

=LAMBDA(data, old, new, IF(old"", ReplaceAll(SUBSTITUTE(data, old, new), OFFSET(old, 1, 0), OFFSET(new, 1, 0) ), data))

使用A2:A10中的源數(shù)據(jù),D列在D2中的舊值以及E 2中E列中的新值,您可以使用此簡(jiǎn)單公式進(jìn)行多個(gè)替代:

=ReplaceAll(A2:A10, D2, E2)

結(jié)果,B2中的單個(gè)公式替換了A2:A10中的所有縮寫,用相應(yīng)的全名:

Excel中的遞歸lambda功能與示例

遞歸lambdas vs. VBA用戶定義的功能

具有編程背景的高級(jí)Excel用戶可能很好奇,可以看到遞歸lambda函數(shù)與可比的VBA代碼的相關(guān)性。好吧,讓我們看看。

遞歸lambda刪除多個(gè)字符

如您所知,這是非功能性偽代碼。我們將其放在VBA編輯器中,以熟悉的形式代表算法,以更好地了解發(fā)生了什么:)

= lambda(data,chars, '聲明參數(shù),如果(chars “” ,',檢查chars是否不是空的removeChars(替換(data,left(chars,1),1), “” ), '如果為troo

用戶定義的功能以刪除多個(gè)字符遞歸

這就是可以用VBA編寫類似的用戶定義函數(shù)的方式:

Function RemoveCharsRecursive(data As String , chars As String ) If ( "" chars) Then data = Replace(data, Left(chars, 1), "" ) chars = Right(chars, Len(chars) - 1) RemoveCharsRecursive = RemoveCharsRecursive(data, chars) Else RemoveCharsRecursive = data End If End Function

用戶定義的函數(shù)以刪除多個(gè)字符非恢復(fù)的功能

也可以使用非恢復(fù)方法編寫類似的功能。在這種情況下,我們將removeChars作為單獨(dú)的函數(shù)編寫,并在Chars String不空時(shí)從removecharsnonRecursive函數(shù)中調(diào)用它。

函數(shù)removeCharsNonRecursive(數(shù)據(jù)作為字符串,字符串作為字符串時(shí),而“” chars data = emoveChars(data,chars)chars chars = right(chars,len(chars)-1)wend dend removeCharsNonRecursive =數(shù)據(jù)結(jié)束=數(shù)據(jù)結(jié)束函數(shù)emoveChars emoveChars emoveChars emoveChars emoveChars(作為字符串,chars as chars as chars sning )removeChars = chars removeChars = chars = chars = chars = chard chars

可以以不同的方式完成相同的任務(wù)。您可以通過(guò)1到Len(字符)的排除字符迭代,并用一個(gè)空字符串替換數(shù)據(jù)中的字符。 MID函數(shù)用于從chars字符串一對(duì)一地提取每個(gè)字符。

函數(shù)removeCharsNonRecursive2(data作為字符串,字符串作為字符串= 1 to len(chars)data = replate = replace(data,chars,chars,index,1), “”Next removeCharSnRecursive2 = data End End函數(shù)

與VBA用戶定義的功能相比,使用lambdas的好處是什么?首先,它們不需要保存工作簿作為宏啟用的.xlsm文件,并為您節(jié)省每個(gè)開(kāi)口啟用宏的麻煩。

希望本教程可以幫助您了解遞歸lambda在Excel中的樣子。我感謝您閱讀,并希望下周在我們的博客上見(jiàn)到您!

練習(xí)工作簿下載

遞歸lambda示例(.xlsx文件)VBA用戶定義功能(.xlsm文件)

以上是Excel中的遞歸lambda功能與示例的詳細(xì)內(nèi)容。更多信息請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開(kāi)發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)代碼編輯軟件(SublimeText3)