早上好
我正在寻求有关如何使用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,因此代码可能不是最漂亮的。
在此先感谢您的帮助!
德里克
答案 0 :(得分:1)
您确实不需要宏,可以使用间接函数。
您将需要的公式:
'= TEXT(EOMONTH(B2,-1),“ MMM”) '= SUM(INDIRECT(B5&“!A1”),INDIRECT(B6&“!A1”),INDIRECT(B7&“!A1”))
答案 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