當前位置: 妍妍網 > 辦公

新函式Reduce,具有迴圈計算功能的超級函式

2024-04-09辦公

迴圈計算,又稱遞迴運算,即反復呼叫自身的結果進行新的運算。除了VBA,以前是沒有任何函式可以完成這樣的功能的,而新函式 REDUCE 則可以( WPS目前不支持,而但很多也會添加 )。所以蘭色稱它們為超能力函式。

是不是聽的迷迷糊糊的?還是舉幾個例子更容易理解。

【例】如下圖所示,要求把A列 大於30 的數位用逗號全部連線到一起。結果如C1單元格所示。

分析:

A列的數位需要逐個判斷是否大於30,A1的值 37 大於30,保留在一個臨時結果中。當判斷到A4單元格(值為33)時,就會用上次臨時結果37連線33,得到新的臨時結果 37,33 ,判斷到A6單元格(值42)也大於30,會用上一次的結果 37,33 連線A6值 即得到新的臨時結果 37,33,42 ,這樣一直迴圈運算下去,得到最終結果 37,33,42,50

新函式Reduce則可以實作上述迴圈運算過程。公式為:

=REDUCE(, A1:A9 ,LAMBDA( X , Y , IF( Y >30,X&","& Y ,X) ))

運算原理:

  • 第一個參數是初始值( 留空 在lambda的參數中對應 X 值的初始值

  • 第二個參數 A1:A9 是一組數,對應 Y 值( Y是第二個參數的逐個遍歷的值 )。

  • IF( Y >30,X&","& Y ,X) 判斷 Y 值是否大於30,如果大於則用上一次運算結果X值連線Y,否則保留上一次運算的結果X。而新的 IF( Y >30,X&","& Y ,X) 運算結果,則是下一次運算式中的X值。

  • 如果還不理解,再看一個使用者的真實提問:

    【例】 如下圖所示,D列為地名,要求把A列中包含的地名全部刪除,結果為E列所示。如A2和A3單元格都有D列的 成都 (d14單元格) ,所以刪除後的結果如E2和E3所示。

    這個範例正好可以用Reduce函式解決:

    =REDUCE( A2 ,$D$2:$D$14,LAMBDA( x ,y, SUBSTITUTE(x,y,"") ))

    註:A2是X的初始值, SUBSTITUTE(x,y,"") 是逐個用D列的值對X進行替換,結果作為新的待替換X值。 SU BS TI TUTE(x,y,"") 最後一次運算的結果,也是公式的最終結果。

    蘭色說 :遞迴運算在VBA編程裏是一個難點,而具有遞迴運算的函式也同樣不容易難理解它的計算過程。只是,這種運算可以解決工作中很多大難題,所以這類函式蘭色還是建議同學們盡量掌握。以後蘭色也會盡量分享更多的套用例項。

    蘭色根據多年經驗,錄制了一全套適合新手和初中級階段使用者學習的Excel教程。包括 Excel表格88個函式用法( 即將更新幾十個新函式 )、119個使用技巧、透視表從入門到精通50集、圖表從入門到精通186集 。( 綠卡會員 有效期內 免費 )詳情點選下方連結