问题很简单。 就是有一个表格,需要替换其中的部分文本。 我第一反应就是嵌套循环。 首先循环左表(原文本),对于左表中的每一行,循环右表,完成右表中的每个替换要求。 既然都是按行循环,就可以使用BYROW函数。 比如,我们可以这么写公式:
其中, data - 原文本 repl_arr,替换要求数组, 第4行的BYROW函数循环原文本区域:data,对于每一行,r,进行内层循环。 第6~11行是内层循环,对于上一层循环的每一行r进行替换。 从逻辑看,似乎没什么大问题。 但是这个函数运行不了,会出错。 因为内层循环BYROW返回的是一个数组。 这样公式返回值就是数组的数组。结果是错误的。 其实,这个方法还有更大的问题。 对于每一行原文本,它用右边的表中每一个替换要求都做了一遍。 但是每一遍都只是完成了一次替换。 而要求是对原文本进行多次替换,这些替换要求是累加的。 其实,一开始的思路并没有问题:可以使用嵌套循环完成。 不过内层循环有两个要求:
满足这两个要求的循环函数就只有REDUCE函数了。 公式如下:
这是最终结果, 详情咨询客服(底部菜单-知识库-客服) Excel+Power Query+Power Pivot+Power BI 自定义函数 底部菜单:知识库->自定义函数 面授培训 底部菜单:培训学习->面授培训 Excel企业应用 底部菜单:企业应用 |
|