以前有很多同事在用EXCEL时,经常要查找和替换某些数值时,会把公式中的不需要替换的也改,然后写了个VBA,实现了完美指定替换
看下面图,其中有2处单元格即F11、G11是有公式,分别为=A168和=A1688。现在用户想替换168为“一路发”,包括非公式的内容也要让用户决定是否替换。


首先计算出100档历史的本金和利息滚存到2025年底个人账户余额为¥178256.65元。

然后系统自动计算未来按社平增长率3%,利率3%100档的退休时月养老金¥7488.94,但是如果A未来按60档缴纳10年后养老金就仅有¥6858.29,而若要预期实现退休时平均缴费指数为1.2时,未来每月就需按172档缴纳得到的养老金为¥8630.11。


但是如果此时A未来按60档缴纳10年后养老金就仅有¥5850.21(与前面双3%条件下的未来按60档结果¥6858.29相比也少了¥1000.00左右)。
而若要预期实现退休时平均缴费指数为1.2时,未来每月就需按172档缴纳得到的养老金为¥7363.87(与前面双3%条件下的未来按172档结果¥8630.11相比也少了¥1300.00左右)。


但EXCEL通常只能替换公式的内容,由于我们以前用EXCEL居多,所以有空的时候写了个VBA。


输入168:

输入替换成的“一路发”:

然后输入你想替换的各种条件选项:



在完全匹配下就不会将公式里的168替换,因为公式是“=A168”,与168不是完全匹配,所以按照前面选择的 近似匹配 下 包括公式 条件,会处理你选择的文件夹内所有EXCEL文件:

可以看到上面近似匹配下包括公式时,=A168和=A1688也被修改成了“=A一路发8”和“=A一路发8”,以及文字中包含有168的也被替换了,比如“4168”变成了“4一路发6”。
而如果我们选择是完全匹配条件下,公式中的168就不会被替换,非完全匹配的单元格内容也不会被替换:

而同样如果我们选 近似匹配 和 不包括公式 时,也不会把公式中的相关含有“168”的公式变更,保持了公式和单元格内容的独立性。

END