【发布时间】:2018-09-25 21:11:14
【问题描述】:
使用 Excel 2016(64 位)的 VBA 问题
我在前两列 (A:B) 和顶行 (1) 中有标题数据。我想动态地向下粘贴一个公式,从单元格 C2 开始,到最后一行 和 最后一列。工作原型如下:
Dim LstCol As Long
LstCol = Cells(1, Columns.Count).End(xlToLeft).Column
Range(Cells(2, "C"), Cells(2, LstCol)).Value = "=INDEX(RC1,MATCH(R1C,RC2,0))"
Dim LstRow As Long
LstRow = Cells(1, Rows.Count).End(xlUp).Row
Range(Cells(2, "C"), Cells(2, LstRow)).Value = "=INDEX(RC1,MATCH(RC1,R2C,0))"
第一个 Dim 按预期工作。该公式已成功部署到第二行到最后一列(或者它可能从最后一列开始并向左移动)。但是,第二个 Dim 因错误而停止。我不确定如何将数据从最后一行(到最后一列)向上传播到第二行(以及相应的最后一列)。
在我的示例中,前两列的标题数据从 1 到 5330 (A1:B5330)。我在第一行(C1:AX1)中也有标题数据。我的目标是从 C2:AX5330 动态填充公式 =INDEX($A2,MATCH(D$1,$B2,0)) 。
我哪里错了?
【问题讨论】:
-
乍一看,
LstRow的表达式 (语义上) 不正确。该行应该是LstRow = Cells(Rows.Count, 1).End(xlUp).Row而不是(您将Rows.Count作为Column的值) -
如果要插入公式,需要使用
Range.Formula而不是Range.Value -
索引和匹配公式错误。
-
INDEX(array, row_num, [column_num])