excel - 实施我的公式以自动化报告
问题描述
我一直试图让我的公式在我的宏中工作,但它没有。我正在尝试自动化一个报告,我创建了一个插入列的宏。我为手动用于生成报告的公式创建了另一个宏。我注意到我使用的公式(索引和匹配等)是 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
推荐阅读
- bash - 从文件名中获取日期,如果日期早于某个日期,则删除文件
- java - 如何在没有 artifactid 的情况下使用 Url?
- vert.x - 如何对 TCP 客户端进行反压
- excel - 在用户表单之间切换时 Excel 用户表单按钮/文本重置
- vim - root 无法在 vim 8.2 中使用系统剪贴板
- scala - 如何使用列函数 scala 插入动态开发的字符串查询
- node.js - 如何使用 express 获取 html 文件的查询字符串
- c++ - 使用带有 decltype 的 std::any_cast ...为什么这段代码会抛出错误的 any_cast?
- javascript - Javascript - 获取
- python - 拆分文件 .log 字段以在 Dataframe 中使用