通过宏将公式应用于列

时间:2014-10-30 22:59:47

标签: excel excel-vba vba

我尝试使用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

1 个答案:

答案 0 :(得分:0)

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

.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中使用它才能生成错误。