【问题标题】:Apply formula to column through macro通过宏将公式应用于列
【发布时间】:2014-10-31 07:53:46
【问题描述】:

我正在尝试使用here 提供的解决方案,但代码在第 5 行和第 6 行抛出运行时错误

Sub CalculateTAT()
  Dim l As Long
  l = Sheets(2).Range("A1:A" & Sheets(2).Cells(Sheets(2).Rows.Count, "A").End(xlUp).Row).Count
  With Sheets("Call Logs")
    .Range("R1").Formula = "=IF(OR(ISBLANK(I1),ISBLANK(F1)),"",I1-F1)"
    .Range("R1").AutoFill Destination:=Range("R1:R" & l), Type:=xlFillDefault
  End With
End Sub

【问题讨论】:

  • 有很多运行时错误。您能否提供有关这些错误的更多信息。例如确切的错误信息/错误号?
  • .AutoFillDestination:=Range("R1:R" & l) 参数缺少将其与父 With Sheets("Call Logs") 关联的 Destination:=.Range("R1:R" & l) 前缀。
  • 感谢 Jeeped,它解决了问题 :)

标签: excel vba


【解决方案1】:

如果您要在带引号的字符串中使用引号(例如公式),则需要将它们加倍。

.Range("R1:R" & l).Formula = "=IF(OR(ISBLANK(I1),ISBLANK(F1)),"""",I1-F1)"

您可以一次用公式填充范围。无需在单独的操作中使用.AutoFill

附录:这可能会好一点

 l = Sheets(2).Cells(Rows.Count, "A").End(xlUp).Row

由于您从第 1 行开始,因此除了该列中最后一个非空白行之外,无需查看任何内容。除非您混合和匹配.XLSX.XLS 工作表,否则Rows.Count 将始终表示最后一行;没有必要给它一个像Sheets(2).Rows.Count 这样的父级。您必须在 .XLSX 中定义它并在 .XLS 中使用它才能生成错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-16
    • 1970-01-01
    • 2022-01-09
    • 2015-06-06
    • 1970-01-01
    相关资源
    最近更新 更多