使用VBA在Excel公式中替换多个文本

时间:2018-11-30 13:20:00

标签: excel vba excel-vba

早上好

我正在寻求有关如何使用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,因此代码可能不是最漂亮的。

在此先感谢您的帮助!

德里克

2 个答案:

答案 0 :(得分:1)

您确实不需要宏,可以使用间接函数。

您将需要的公式:

'= TEXT(EOMONTH(B2,-1),“ MMM”) '= SUM(INDIRECT(B5&“!A1”),INDIRECT(B6&“!A1”),INDIRECT(B7&“!A1”))

enter image description here

答案 1 :(得分:0)

您可以尝试类似的方法以减少重复代码的数量。此外,已删除2018-11-30T15:29:17.519+0000 I REPL [ReplicationExecutor] Error in heartbeat request to mongo2.**************.com:27017; InvalidReplicaSetConfig: Our replica set configuration is invalid or does not include us

的实例
.Select