excel - 使用VBA替换excel公式中的多个文本
问题描述
早上好,
我正在寻求有关如何使用 VBA - Excel 正确替换公式中的多个条件的帮助。我在宏的开头有一个用户表单,用户将在其中选择他们想要运行报告的月份。我使用上个月的报告作为模板,需要更新公式以相应地反映正确的月份。我希望将公式应用于一整列数据。我将公式中的每个月向前移动一个月,以捕获前四 (4) 个月的数据。
例如:我正在为 AUG 运行报告。我将使用上个月运行的 JUL 报告作为模板。
当前在报告中的公式:
=sum('JUL18'!$E$19+'JUN18'!$E$19+'MAY18'!$E$19+'APR18'!$E$19)/B6
我希望公式更新为:
=sum('AUG18'!$E$19+'JUL18'!$E$19+'JUN18'!$E$19+'MAY18'!$E$19)/B6
我目前拥有的代码是:
If FormMonth.Value = "AUG" Then
Columns("D:D").Select
Selection.Replace What:="JUL", Replacement:="AUG", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:="JUN", Replacement:="JUL", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:="MAY", Replacement:="JUN", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:="APR", Replacement:="MAY", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:="MAR", Replacement:="APR", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:="FEB", Replacement:="MAR", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End If
-最终结果如下:
=sum('AUG18'!$E$19+'AUG18'!$E$19+'JUN18'!$E$19+'MAY18'!$E$19)/B6
公式中的前两个月和最后两个月似乎正确更新,但是 JUN(应该更新到 JUL)跳转到 AUG。就好像它继续循环,直到它到达选择的表格月份。
关于为什么会这样的任何想法?仍在适应 VBA,因此代码可能不是最漂亮的。
解决方案
推荐阅读
- perl - 循环遍历 perl 数组打印内存地址
- spring - Spring SOAP 服务:@WebService 和 @WebMethod 与 @Endpoint 和 @PayloadRoot / @ResponsePayload
- sqlite - 加密 SQLITE 数据库并在 Windows VCL 应用程序中与 FireDac 一起使用
- python - 使用 Python 请求 Twitter 趋势并探索本地趋势:代码给出 {'errors': [{'code': 215, 'message': 'Bad Authentication data.'}]}
- c++ - C++中二维向量的迭代
- python - 使用python从TXT文件中提取信息
- javascript - Discord.js 赠品命令
- database - 如何使用键集分页对表数据进行动态排序?
- c++ - 如何启用 libMagick++ 以保存 .png 文件格式
- sql-server - 使用 STRING_SPLIT 将动态参数传递给 IN 参数