实现我的公式以使报告自动化



我一直试图让我的公式在宏中运行,但它没有。我正在尝试自动化一个报告,我创建了一个宏,它在其中插入列。我为手动用于生成报告的公式创建了另一个宏。我注意到我使用的公式(索引和匹配等(是CSE,我必须按下control、shift和enter才能工作。现在我在宏中得到了它,结果就是整个公式字符串。此外,我需要从列的第二个单元格到最后一行实现我的公式。我试着使用最后一行函数,但我认为它不起作用,因为函数不起作用。我将附上我的代码图片以供参考,因为这可能是一个更好的解释。

Sub InsertColumns()
Columns("Q:S").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("Q1").Value = "SLA (Derived)"
Range("R1").Value = "Due Date Derived"
Range("S1").Value = "SLA Remaining Days Derived"
Columns("U:V").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("U1").Value = "Due Date After Reset SLA Applied"
Range("V1").Value = "Past Due (Y/N)"
Columns("X:X").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("X1").Value = "Interim Reset SLA"
End Sub
Sub Past_Due_Report()
'
' Past_Due_Report Macro
'
'     Keyboard Shortcut: Ctrl+p
'
ActiveWindow.SmallScroll Down:=-9
Range("Q2").Select
ActiveCell.FormulaR1C1 = _
"=INDEX('Initial SLA'!R1C1:R256C6,MATCH(RC[-4]&RC[-3],'Initial SLA'!R1C1:R256C1&'Initial 
SLA'!R1C2:R256C2,0),6)"
Range("R2").Select
ActiveCell.FormulaR1C1 = "=RC[-12]+RC[-1]"
Range("S2").Select
ActiveCell.FormulaR1C1 = "=[@[Due Date Derived]]-TODAY()"
Range("U2").Select
ActiveCell.FormulaR1C1 = "=[@[Past Due (Y/N)]]"
Range("V2").Select
ActiveCell.FormulaR1C1 = 
"=IF([@[Due Date After Reset SLA Applied]]<TODAY(),1,0)"
Range("V3").Select
End Sub

如果您需要添加CSE公式,您可能是指公式数组,您可以使用.FormulaArray而不是.FormulaR1C1:

ActiveCell.FormulaArray = "=INDEX('Initial SLA'!R1C1:R256C6,MATCH(RC[-4]&RC[-3],'Initial SLA'!R1C1:R256C1&'Initial SLA'!R1C2:R256C2,0),6)"

你可以这样改进你的代码:

With Range("Q2")
.FormulaArray = "=INDEX('Initial SLA'!R1C1:R256C6,MATCH(RC[-4]&RC[-3],'Initial SLA'!R1C1:R256C1&'Initial SLA'!R1C2:R256C2,0),6)"
.Offset(0,1).FormulaR1C1 = "=RC[-12]+RC[-1]"
.Offset(0,1).FormulaR1C1 = "=[@[Due Date Derived]]-TODAY()"
.Offset(0,2).FormulaR1C1 = "=[@[Past Due (Y/N)]]"
.Offset(0,1).FormulaR1C1 = "=IF([@[Due Date After Reset SLA Applied]]<TODAY(),1,0)"
End With

最新更新