問題很簡單。 就是有一個表格,需要替換其中的部分文本。 我第一反應就是嵌套循環。 首先循環左表(原文本),對于左表中的每一行,循環右表,完成右表中的每個替換要求。 既然都是按行循環,就可以使用BYROW函數。 比如,我們可以這么寫公式:
其中, data - 原文本 repl_arr,替換要求數組, 第4行的BYROW函數循環原文本區域:data,對于每一行,r,進行內層循環。 第6~11行是內層循環,對于上一層循環的每一行r進行替換。 從邏輯看,似乎沒什么大問題。 但是這個函數運行不了,會出錯。 因為內層循環BYROW返回的是一個數組。 這樣公式返回值就是數組的數組。結果是錯誤的。 其實,這個方法還有更大的問題。 對于每一行原文本,它用右邊的表中每一個替換要求都做了一遍。 但是每一遍都只是完成了一次替換。 而要求是對原文本進行多次替換,這些替換要求是累加的。 其實,一開始的思路并沒有問題:可以使用嵌套循環完成。 不過內層循環有兩個要求:
滿足這兩個要求的循環函數就只有REDUCE函數了。 公式如下:
這是最終結果, 詳情咨詢客服(底部菜單-知識庫-客服) Excel+Power Query+Power Pivot+Power BI 自定義函數 底部菜單:知識庫->自定義函數 面授培訓 底部菜單:培訓學習->面授培訓 Excel企業應用 底部菜單:企業應用 |
|