excel - Range.replace 方法不替换任何东西
问题描述
我已经用更简单的公式尝试并测试了这种方法,并且效果很好,但是当我用新的更长的公式尝试它时,它会进入FormulaPart1
,range("J2")
但不会用FormulaPart2
and替换文本FormulaPart3
。该代码也没有给出任何错误。
基本上,该公式计算可用性百分比,即
((Available Hours - Engineering Downtime)/ Available Hours) * 100
请在下面查看我的代码。
Sub ArrayFormCalc()
Dim FormulaPart1 As String
Dim FormulaPart2 As String
Dim FormulaPart3 As String
Dim S1 As Worksheet
Set S1 = Sheets("Sheet1")
FormulaPart1 = "=IFERROR(((INDEX(INDIRECT(RC5&""_""&TEXT(R5C,""mmm"")),MATCH(RC6,INDIRECT(RC5&""_""&TEXT(R5C,""mmm"")&""_Shift""),0)" & _
",MATCH(R5C,INDIRECT(RC5&""_""&TEXT(R5C,""mmm"")&""_Date""),0))))-xxxxx,"""")"
FormulaPart2 = "SUMIFS(DT_Cur_Day_Hrs,DT_Equip,RC7,DT_Site,RC5,DT_Strt_Date,R5C,DT_Shift,RC6,DT_Cat,""Engineering Downtime"")" & _
"+SUMIFS(DT_Nxt_Day_Hrs,DT_Equip,RC7,DT_Site,RC5,DT_End_Date,R5C,DT_Shift,RC6,DT_Cat,""Engineering Downtime""))/yyyy"
FormulaPart3 = "(INDEX(INDIRECT(RC5&""_""&TEXT(R5C,""mmm"")),MATCH(RC6,INDIRECT(RC5&""_""&TEXT(R5C,""mmm"")&""_Shift""),0)," & _
"MATCH(R5C,INDIRECT(RC5&""_""&TEXT(R5C,""mmm"")&""_Date""),0))*100)"
Application.ReferenceStyle = xlR1C1
With S1.Range("J2")
.FormulaArray = FormulaPart1
.Replace "xxxxx", FormulaPart2, xlPart
.Replace "yyyy", FormulaPart3, xlPart
End With
Application.ReferenceStyle = xlA1
End Sub
解决方案
我无法确定确切的问题,但可能是您在尝试替换之前将无效公式写入数组。我建议在字符串上预先使用替换公式,并且只将最终结果粘贴到 FormulaArray 中。 https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/replace-function
推荐阅读
- gitlab - 如何手动触发Gitlab CI管道,在正常情况下,它是由带有提交ID的webhook触发的?
- node.js - 当我使用 findOne 方法来表达参数路由时,为什么我会得到 favicon.ico?
- c# - 如何在 WPF C# 中三秒后在两个视图之间移动?
- cocoapods - Cocoapods 仅在私有 pod 中使用另一个 pod,但在使用私有 pod 的项目中不使用
- php - GuzzleHttp 返回自由数组
- python - pyodbc ImportError DLL 在执行脚本时加载失败,但能够使用 python 解释器在控制台中导入
- javascript - 选择 js 删除类值
- c++ - 是否有任何类型特征方法可以从所需的范围容量中获取 int 类型?
- excel - 使用 VBA 修改 ListBox
- java - Zookeeper - 跟随领导者时出现异常 java.lang.IllegalArgumentException