小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

一個(gè)多重文本替換問題(2):遞歸 - Excel函數(shù)式編程

 ExcelEasy 2024-08-02 發(fā)布于北京


上次我們介紹了一個(gè)多重文本替換的問題(一個(gè)多重文本替換問題(1) - Excel函數(shù)式編程),我們使用雙重循環(huán)完成了要求。

視頻留言中有幾位朋友給出了其他的方法,都很好。其中有一位朋友是先將源數(shù)據(jù)合并成一個(gè)字符串,然后循環(huán)替換。最后拆分的方式尤其好,是我比較推薦的思路。

今天介紹一個(gè)用遞歸解決這個(gè)問題的方法。

用遞歸解決問題其實(shí)很簡(jiǎn)單,我之前介紹過不少這方面的內(nèi)容(比如這里),前提是需要先有對(duì)問題的遞歸定義。

問題

原來的問題如下:

左表是源數(shù)據(jù),其中的文本需要替換,規(guī)則是在右表中第一列的單詞替換成第二列的單詞。

分析


我們以B2為例,

Lorem ipsum dolor sit amet,

其中的ipsum需要替換為xpsum,dolor需要替換為dplor。

我們以str表示待替換的字符串,

以replArr表示右邊的規(guī)則數(shù)組,

i表示當(dāng)前替換到的規(guī)則數(shù)組中的序號(hào),

函數(shù)replFunc表示替換函數(shù),

那么,

replFunc(str, replArr, i)

表示已經(jīng)使用規(guī)則數(shù)組replArr中的第 i 條規(guī)則(即已經(jīng)用前 i 條規(guī)則完成了替換),如果 i = 5,也就表示我們完整了整個(gè)替換,

那么這個(gè)替換從邏輯上就可以表示為:

"先用這個(gè)函數(shù)去完成前 i - 1條規(guī)則的替換,然后對(duì)結(jié)果進(jìn)行第 i 條規(guī)則的替換",

寫成公式就是,

substitute(  replFunc(str, replArr, i - 1),   第i條規(guī)則的左邊子字符串,  第i條規(guī)則的右邊替換字符串

這就是這個(gè)邏輯的遞推關(guān)系,據(jù)此,就可以寫出遞歸定義:

=LET(    data, B2:B6,    replArr, E2:F7,    replFunc, LAMBDA(me,x,replarr,i,          IF(i = 0,              x,              SUBSTITUTE(me(me, x, replarr, i - 1), INDEX(replarr, i, 1), INDEX(replarr, i, 2))          )    ),    replFunc(replFunc, B2, replArr, ROWS(replARR)))

第4~9行就是遞歸定義。這里我們多使用了一個(gè)me參數(shù),是為了在LET函數(shù)中使用自定義遞歸函數(shù)(具體原因請(qǐng)參見為什么遞歸函數(shù)用不了?- Excel 函數(shù)式編程

問題

上面的公式中,我們最后調(diào)用replFunc時(shí),僅僅對(duì)B2進(jìn)行了替換。

但是我們要替換的是一個(gè)區(qū)域中所有的字符串。

是否需要再使用一個(gè)遞歸函數(shù)呢?

當(dāng)然可以再為左表定義一個(gè)遞歸函數(shù)。

不過完全用不到。因?yàn)榭疾煳覀儗?duì)replFunc這個(gè)函數(shù)的定義,會(huì)發(fā)現(xiàn)其中的x是支持?jǐn)?shù)組的,于是,我們可以直接將最后一行(第10行)改成對(duì)data的引用,

=LET(    data, B2:B6,    replArr, E2:F7,    replFunc, LAMBDA(me,x,replarr,i,        IF(i = 0,            x,            SUBSTITUTE(me(me, x, replarr, i - 1), INDEX(replarr, i, 1), INDEX(replarr, i, 2))        )    ),    replFunc(replFunc, data, replArr, 5))

結(jié)果如下:

詳情咨詢客服(底部菜單-知識(shí)庫(kù)-客服)

Excel+Power Query+Power Pivot+Power BI


Power Excel 知識(shí)庫(kù)    按照以下方式進(jìn)入知識(shí)庫(kù)學(xué)習(xí)
Excel函數(shù)   底部菜單:知識(shí)庫(kù)->Excel函數(shù)

自定義函數(shù)  底部菜單:知識(shí)庫(kù)->自定義函數(shù)

Excel如何做  底部菜單:知識(shí)庫(kù)->Excel如何做

面授培訓(xùn)  底部菜單:培訓(xùn)學(xué)習(xí)->面授培訓(xùn)

Excel企業(yè)應(yīng)用  底部菜單:企業(yè)應(yīng)用

也可以在歷史文章中學(xué)習(xí)Excel,Power Query,Power Pivot,Power BI,Power Automate各種技巧。

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章