【问题标题】:Excel VBA: cell referencingExcel VBA:单元格引用
【发布时间】:2017-12-06 18:15:54
【问题描述】:

我遇到了单元格引用问题,不知道是否存在解决方案。

使用 VBA 代码,我正在使用以下语法将对不同单元格的引用写入一个单元格:

activecell.formula = "=" & Cells(A1).address

现在我需要为数千个单元格复制这个公式。每个单元格都应该引用一个连续的cell (A1,A2,A3....A120..)

我遇到的问题是使用

Cells(A1).address

它修复了Cells(A1)。当我使用自动填充功能时,我有数千个单元格都引用相同的cells(A1),而我需要动态引用并且每次都引用下一个cell (A2,A3,A4..)。而且我需要使用自动填充功能,因为如果我使用loop 和固定引用在每个单元格上编写公式,则代码运行需要几个小时(如前所述,有数千个单元格)

然后我应该使用相对引用格式:

activecell.formulaR1C1 = ...

但单元格(A1)与我的活动单元格的距离并不总是相同。

通过 VBA,我可以计算出每次距离我的 activecell 的距离,但我如何使用 R1C1 表示法的这些数据?

所以,可以说使用

row.count

函数我可以计算我想要引用的第一个单元格,(这次)在第 100 行和第 3 列。所以,我有:lastrow = 100,column = 3。请注意,第 100 行不同每次我运行宏。我的activecellcells(5,5)

这是我想使用的:

Sub problemsolved ()

Dim lastrow as string
Dim RowL as string
Dim CoL as string

lastrow = activesheet.cells(rows.count, 1).End(xlUp).row


cells(5,5).select

Rol = lastrow - 5
Col = 3 -5


activecell.formulaR1C1 = "=R[Rol]C[Col]"

selection.autofill Destination:=Range(cells(5, 5), cells(10005, 5))

end sub

假设 lastrow = 100 我需要得到以下结果:

cell(5,5): =cells(100,3)
cell(6,5): =cells(101,3)
cell(7,5): = cells(102,3)
.....
cell(10005,5): = cells(10100,3)

当然,我试过语法:

activecell.formulaR1C1 = "=R[lastrow]C[3]"

但它不起作用,那我该怎么做呢? 有人有想法吗?

谢谢

【问题讨论】:

  • 假设人们太忙了,无法完全阅读所有这些内容。您还应该说什么“不起作用”。即,你想做什么,你尝试了什么,你得到了什么结果。

标签: excel vba


【解决方案1】:

用途:

With ActiveSheet
    .Range(.Cells(5,5),.Cells(10005,5)).FormulaR1C1 = "=R[" & RowL & "]C[" & col & "]"
End With 

不需要自动填充

所以

Sub problemsolved ()

Dim lastrow as Long
Dim RowL as Long
Dim CoL as Long

lastrow = activesheet.cells(rows.count, 1).End(xlUp).row



Rowl = lastrow - 5
Col = 3 -5


With ActiveSheet
    .Range(.Cells(5,5),.Cells(10005,5)).FormulaR1C1 = "=R[" & RowL & "]C[" & col & "]"
End With 

end sub

【讨论】:

  • 嗨,斯科特,非常感谢您的帮助。这正是我一直在寻找的,一种使用相对符号但也使用一些变量的方法。你今天让我的生活更轻松了.. 非常感谢!
猜你喜欢
  • 1970-01-01
  • 2016-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多