Excel VBA:公式语法引用工作表索引号(相对而不是名称)

时间:2018-07-30 22:04:45

标签: excel vba excel-vba

我正在研究一个宏,该宏将过滤数据库(每天更新)并计算特定公式。每次运行宏时,都会使用过滤后的信息创建一个新的工作表(唯一命名),并在另一个工作表上执行计算。

我无法使用正确的语法创建宏。每次运行宏时,我需要参考的过滤后的数据都位于工作表3(唯一命名)上。我是VBA的新手,不了解我需要在R1C1公式中引用工作表(索引)作为工作表的语法。现在,我的代码如下:

Dim LR As Long

   LR = Worksheets(3).Cells(Rows.Count, 1).End(x1Up).Row  

   Range("G6").Select
   ActiveCell.FormulaR1C1 = _ 
      "=COUNTIF(='Worksheets(3)'!R6C5:R" & LR &"C5,R[-1]C"

该代码正在计算Years(可变长度)的列是否等于R [-1] C(这是一个包含特定年份的单元格),并将在单元格G6中显示计数。

在这种情况下是否可以使用工作表(索引)引用?我还有什么其他方法可以完成引用没有名称的工作表的任务?我需要引用“名称”变量吗?

1 个答案:

答案 0 :(得分:0)

您在那里有一个额外的=登录,您似乎缺少了一个右括号,但是.address external:= true会产生一个不错的范围引用。

Dim LR As Long, str as string

with Worksheets(3)
    LR = .Cells(Rows.Count, 1).End(xlUp).Row 
    str = .range(.cells(6, 5), .cells(lr, 5)).address(external:=true, ReferenceStyle:=xlR1C1)
end with

Range("G6").FormulaR1C1 = _ 
  "=COUNTIF(" & str & ", R[-1]C)"