【发布时间】: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 行不同每次我运行宏。我的activecell 是cells(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]"
但它不起作用,那我该怎么做呢? 有人有想法吗?
谢谢
【问题讨论】:
-
假设人们太忙了,无法完全阅读所有这些内容。您还应该说什么“不起作用”。即,你想做什么,你尝试了什么,你得到了什么结果。