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

Excel中的遞歸lambda功能與示例

Mar 31, 2025 pm 01:54 PM

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

隨著Lambda功能的引入,Excel中的遞歸計算已成為任何人,而不僅僅是VBA程序員。簡而言之,您現在可以構建表現得像編程語言的公式,並讓您以如此少,如此快的速度取得如此多的成就:)

請記住,本教程中討論的示例暗示您已經知道Lambda的語法和基本用途。如果不是這樣,它就可以從要點開始:如何在Excel中寫和使用lambda。

遞歸lambda功能

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

在計算機科學中,遞歸是一種解決函數直接或間接調用自己的問題的方法。這樣的功能稱為遞歸。基本上,遞歸函數通過迭代起作用,並通過解決相同問題的較小實例找到解決較大問題的解決方案。

當前,Lambda是唯一支持遞歸的Excel功能,使您能夠為無編碼的複雜問題創建緊湊而優雅的解決方案。

在VBA中,遞歸通常是使用A for…下一步或循環進行的。 lambda通常依靠IF函數來測試布爾條件,如果條件為真或錯誤,則反復出現。

這是遞歸lambda功能的結構,其最簡單的形式:

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

關鍵點是停止遞歸電話永遠繼續。為此,您應該提供結局案例(也稱為停止案例基本案例)。如果沒有提供出口點,則公式將不斷迭代,直到您的計算機崩潰為止,只是開玩笑,它會拋出#num!錯誤。

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

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

從外部來源導入數據時,垃圾字符通常會潛入,您需要以某種方式找到一種清潔數據的方法。

替換所有功能可以通過無需替換給定字符的所有出現,但一次只能處理一個字符。

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

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

我們的自定義lambda函數命名為removeChars ,它需要兩個輸入參數:

  • 數據- 一個細胞或要清潔的細胞範圍。
  • 字符- 不需要的字符要刪除。可以以文本字符串或單元格引用的形式提供。在單元格中,除非您也要消除空間,否則應在沒有空格的情況下列出字符。

在高水平上,這是函數的作用:

RemoveChars函數循環通過排除列表( chars ),並一次清除一個字符。在每個遞歸調用之前,IF函數評估其餘的字符。如果字符串不是空的(chars “”),則該函數會自調用。一旦處理了最後一個字符,迭代過程就會完成 - 該公式以當前形式和退出返回數據

反向邏輯也將起作用:如果chars字符串為空(chars =“”),則返回當前數據並退出;否則,請調用removeChars函數:

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

無論您選擇哪種方法,結果都將完全相同:

Excel中的遞歸lambda功能與示例

提示。通過正則表達式可以輕鬆完成相同的任務。有關更多詳細信息,請參閱Excel Regex刪除特殊字符。

如何在Excel中寫遞歸lambda

我想從免責聲明開始:)沒有記錄的在Excel中構建遞歸lambdas的方法,鑑於該功能是全新的,這是可以闡明的。我將分享自己的方式,這可能對您有幫助。

創建核心公式

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

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

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

  • 文字- 替換字符的文字。就我們而言,這是A2中的文本字符串。
  • old_text-要替換的字符。我們需要檢查D2中的每個字符,並且有理由從最左邊的角色開始。左功能可以輕鬆為我們獲取:

    LEFT(D2, 1)

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

結果,我們的核心公式採用此形式:

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

Excel中的遞歸lambda功能與示例

由於替代只能一次進行一次替換,因此必須執行D2中的“排除列表”中的字符多次。問題是 - 我們如何強迫它處理下一個角色?這是答案:

在每次迭代中,我們將從左側剝離一個角色,即已經看過的角色。與Len結合使用的正確功能很容易做到這一點:

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

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

Excel中的遞歸lambda功能與示例

將核心公式轉換為lambda功能

如您所記得的那樣,我們的自定義功能應該被命名為removeChars ,它將有2個參數:數據字符

您的工作是指示功能如何計算每個參數:

  • 數據- 替換字符的字符串。它由替代公式提供。
  • 字符- 要刪除的字符。它由正確的公式提供。

您要做的就是簡單地將上面討論的兩個公式放置在removechars函數的內部,以逗號或用於分離excel中函數參數的任何字符(由在區域設置中設置的列表分隔符確定)。

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

請記住,lambda在參數而不是單元格引用上運行,下一步是將A2更改為數據,而D2則將D2更改為Chars

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

RemoveChars功能已完成。可悲的是,此時無法進行測試,我們只能依靠先前測試的結果,並在需要時進行調試。

使lambda函數恢復自身遞歸

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

與任何自定義lambda一樣,您從聲明參數開始:

=LAMBDA(data, chars,

接下來,您將評估一定條件,並取決於結果調用遞歸或退出。建立退出點是至關重要的考慮因素。如果您不這樣做,那麼您的公式將無法正常工作,因為它永遠不會擺脫循環。

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

這是通用方法:

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

這是其完整形式的真實公式:

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

另外,您可以檢查字符是否為空白(chars =“”)。如果是真的,請返回數據並退出;如果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與命名他們的非徵收同齡人沒有什麼不同:

  1. CTRL 3快捷方式打開名稱管理器,然後單擊“新”
  2. “新名稱”對話框中,執行以下操作:
    • 名稱框中,鍵入函數的名稱: removeChars
    • 將範圍設置為工作簿
    • 盒子中,粘貼您的lambda公式,以確保其以平等標誌開頭。
    • 可選地,在評論框中輸入參數的描述,以供進一步參考。
    • 單擊確定以保存您的新功能。

      Excel中的遞歸lambda功能與示例

如何在Excel中使用遞歸lambda

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

從最終用戶的角度來看,我們的自定義函數的語法與以下方式一樣簡單:

RemoveChars(數據,字符)

例如,要清潔A2:A10(數據)中的數據,我們在D2( chars )中鍵入不需要的字符,然後在B2中輸入以下公式:

=RemoveChars(A2:A10, D2)

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

Excel中的遞歸lambda功能與示例

如果您喜歡傳統的“一個公式 - 一個單元格”的行為,請使用單元格引用進行數據(A2),然後用$符號鎖定Chars單元格($ d $ 2),以防止其在將公式調低時更改:

=RemoveChars(A2, $D$2)

上面的公式用於B2,然後將其拖動B10:

Excel中的遞歸lambda功能與示例

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

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

Excel中的遞歸lambda功能與示例

筆記。由於核心公式中使用的替代功能對病例敏感,因此我們的自定義功能將大寫和小寫字母視為不同的字符。如果要刪除某個字符,例如“ X”,無論字母案例如何,請在字符字符串中同時包含“ X”和“ X”。

了解遞歸

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

  • 上一個替代品的結果成為下一個呼叫的新數據參數,就好像我們使用了嵌套的替代功能一樣。
  • 字符字符串由一個字符減少。您可以將其視為一種倒計時。一旦Chars字符串變為空,迭代過程就會停止,該公式將以目前的形式返回數據作為最終結果。

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

Excel中的遞歸lambda功能與示例

更多遞歸lambda功能的示例

在以下示例中,我們將研究如何使用新功能擴展現有的Lambda功能以根據您的需求進行調整。

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

除了各種無關的字符外,您的數據還可能包含過多的空間。為了擺脫它們,您可以像任何內置功能一樣嵌套在裝飾中的內心

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

要查看效果,請比較B列和D中的結果。在後一種情況下,不僅要刪除不必要的字符,而且都被刪除了所有領先和落後空間,而內部空間則減少到單詞之間的單個空間字符:

Excel中的遞歸lambda功能與示例

如果您不想每次都要築巢,則可以在lambda本身內部進行一次設置:

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

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

=RemoveTrim(A2:A10, D2)

Excel中的遞歸lambda功能與示例

示例2。用同一字符替換多個字符

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

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

替換(數據,字符,new_char)

為了將RemoveChars轉變為替代eChaceChars ,有3個小編輯要進行:

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

結果,我們獲得了另一個有用的lambda來代替多個字符遞歸:

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

例如,如果您的供應商突然更改其ID或SKUS格式,則可以使用此公式使用適當的一個(E2)替換所有不適當的字符(E1):

=ReplaceChars(A2:A6, E1, E2)

Excel中的遞歸lambda功能與示例

示例3。一次將多個值替換為其他值

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

由於舊值和新值將放置在單獨的單元格中(如下屏幕截圖所示),因此我們在上一個示例中使用的正確函數無法使用。要循環遍歷舊的/新對,我們需要找出其他東西。嗯,Excel中似乎有一個函數,可以從給定的單元中移動指定數量的行和列。是的,那是偏移!

通過建立的主要方法,編寫替換功能沒什麼大不了的:

替換(數據,舊,新)

對於數據,我們僅以基本形式使用替代函數,僅將舊值替換為新值:

SUBSTITUTE(data, old, new)

為了獲得值,我們將從列表上的最上方單元格開始,然後在每次交互時向下移動1行:

OFFSET(old, 1, 0)

為了獲得價值,我們將做完全相同,但是當然,在列表中:

OFFSET(new, 1, 0)

最後,在IF的幫助下實現已經熟悉的退出策略,您的新功能遞歸lambda已準備就緒(請不要忘記在名稱管理器中命名:)

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

使用A2:A10中的源數據,D列在D2中的舊值以及E 2中E列中的新值,您可以使用此簡單公式進行多個替代:

=ReplaceAll(A2:A10, D2, E2)

結果,B2中的單個公式替換了A2:A10中的所有縮寫,用相應的全名:

Excel中的遞歸lambda功能與示例

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

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

遞歸lambda刪除多個字符

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

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

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

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

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

用戶定義的函數以刪除多個字符非恢復的功能

也可以使用非恢復方法編寫類似的功能。在這種情況下,我們將removeChars作為單獨的函數編寫,並在Chars String不空時從removecharsnonRecursive函數中調用它。

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

可以以不同的方式完成相同的任務。您可以通過1到Len(字符)的排除字符迭代,並用一個空字符串替換數據中的字符。 MID函數用於從chars字符串一對一地提取每個字符。

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

與VBA用戶定義的功能相比,使用lambdas的好處是什麼?首先,它們不需要保存工作簿作為宏啟用的.xlsm文件,並為您節省每個開口啟用宏的麻煩。

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

練習工作簿下載

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

以上是Excel中的遞歸lambda功能與示例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1662
14
CakePHP 教程
1418
52
Laravel 教程
1311
25
PHP教程
1261
29
C# 教程
1234
24
Excel中的中位公式 - 實際示例 Excel中的中位公式 - 實際示例 Apr 11, 2025 pm 12:08 PM

本教程解釋瞭如何使用中位功能計算Excel中數值數據中位數。 中位數是中心趨勢的關鍵度量

Excel共享工作簿:如何為多個用戶共享Excel文件 Excel共享工作簿:如何為多個用戶共享Excel文件 Apr 11, 2025 am 11:58 AM

本教程提供了共享Excel工作簿,涵蓋各種方法,訪問控制和衝突解決方案的綜合指南。 現代Excel版本(2010年,2013年,2016年及以後)簡化了協作編輯,消除了M的需求

Google電子表格Countif函數帶有公式示例 Google電子表格Countif函數帶有公式示例 Apr 11, 2025 pm 12:03 PM

Google主張Countif:綜合指南 本指南探討了Google表中的多功能Countif函數,展示了其超出簡單單元格計數的應用程序。 我們將介紹從精確和部分比賽到Han的各種情況

Excel:組行自動或手動,崩潰並擴展行 Excel:組行自動或手動,崩潰並擴展行 Apr 08, 2025 am 11:17 AM

本教程演示瞭如何通過對行進行分組來簡化複雜的Excel電子表格,從而使數據易於分析。學會快速隱藏或顯示行組,並將整個輪廓崩潰到特定的級別。 大型的詳細電子表格可以是

如何將Excel轉換為JPG-保存.xls或.xlsx作為圖像文件 如何將Excel轉換為JPG-保存.xls或.xlsx作為圖像文件 Apr 11, 2025 am 11:31 AM

本教程探討了將.xls文件轉換為.jpg映像的各種方法,包括內置的Windows工具和免費的在線轉換器。 需要創建演示文稿,安全共享電子表格數據或設計文檔嗎?轉換喲

Google表圖教程:如何在Google表中創建圖表 Google表圖教程:如何在Google表中創建圖表 Apr 11, 2025 am 09:06 AM

本教程向您展示瞭如何在Google表中創建各種圖表,並為不同的數據方案選擇正確的圖表類型。 您還將學習如何創建3D和gantt圖表,以及如何編輯,複製和刪除圖表。 可視化數據是CRU

Excel:如果單元格包含公式示例 Excel:如果單元格包含公式示例 Apr 09, 2025 am 09:04 AM

本教程演示了各種Excel公式,以檢查單元格是否包含特定值,包括文本,數字或字符串部分。 它涵蓋了使用if,istext,isnumber,搜索,查找,cuntif,centeck,sumproduct,vlookup和neste的情況

如何在Excel中進行計算 如何在Excel中進行計算 Apr 11, 2025 am 10:20 AM

本教程演示瞭如何在Microsoft Excel中執行算術計算並修改公式中的操作順序。 Excel的功能遠遠超出了簡單的添加。由於其H,它可以處理複雜的計算

See all articles