不确定如何将公式动态粘贴到最后一列和最后一行
Posted
技术标签:
【中文标题】不确定如何将公式动态粘贴到最后一列和最后一行【英文标题】:Unsure How to Dynamically Paste a Formula To Last Column and Last Row 【发布时间】: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])
【参考方案1】:
您需要使用工作表正确限定 Range
和 Cells
的实例。您可以直接执行此操作,使工作表变量变暗,或使用 With
块,如下所示:
Dim LRow as Long
With ThisworkBook.Sheets("????")
LRow = .Range("A" & .Rows.Count).End(xlUp).Row
.Range("C2:AX5330").Formula = "=INDEX($A2,MATCH(D$1,$B2,0))" 'Make sure your cell references are correct here
.Range("C2:AX5330").Value = .Range("C2:AX55330").Value 'Place as values instead of formula
End With
【讨论】:
以上是关于不确定如何将公式动态粘贴到最后一列和最后一行的主要内容,如果未能解决你的问题,请参考以下文章