如果列值存储在变量中,则更新单元格中的公式

时间:2011-12-12 08:47:29

标签: vba excel-vba excel

我有这些公式activesheet.cells(3,"C").Formula = "=F2"

但我希望公式与activesheet.cells(3,"C").Formula = "=lastcolumn2"

类似

所以我找到了第6行的最后一列

last_col = ActiveSheet.Cells(6, Columns.Count).End(xlToLeft).Column

last_col中包含10值。

我已经插入了这些公式

ActiveSheet.Cells(3,"C").Formula = "=" & last_col & "1"

但是这些会插入值"=101",但不会插入公式"=J1"(这是我所期望的) 我怎么做到这一点。任何帮助是极大的赞赏。

4 个答案:

答案 0 :(得分:3)

当你抓住last_col时你也可以使用.Address(轻微旋转JMax的答案 - 对不起,我刚刚意识到它已经足够相似,我应该在他的下面添加评论)。如果你不想要绝对路径(比如J1而不是$ J $ 1),你可以使用:

last_col = Cells(6, Columns.Count).End(xlToLeft).Address(False, False)
Cells(3, 3).Formula = "=" & last_col

答案 1 :(得分:2)

如果您使用 R1C1 表示法而不是 LC1 ,您的解决方案将有效。

这是另一种方法:

ActiveSheet.Cells(3, 1).Formula = "=" & Cells(1, last_col).Address

答案 2 :(得分:1)

我解决了自己的问题,对不起,但是当我意外地打开我的数据透视表报告并尝试了这些方式时,我才找到了解决方法。

ActiveSheet.Cells(3, 1).Formula = "=R" & "1" & "C" & last_col 

希望这些可以帮助其他人但请告诉我是否有其他方法可以做到这一点。

由于

答案 3 :(得分:0)

我不明白你的问题或答案。如果你感到高兴,这并不重要,但我怀疑你得到了你想要的运气效果。

原始公式为activesheet.cells(3,"C").Formula = "=F2"。这具有将单元格C3设置为单元格F2的值的效果。如果更改了单元格F2,则单元格C3将更改为匹配。

您希望将单元格C3设置为第2行最后使用的单元格的值。您首先使用:

last_col = ActiveSheet.Cells(6, Columns.Count).End(xlToLeft).Column

这会将last_col设置为第6行中最后一次使用的列的数量。您没有解释为什么要查找第6行的最后一个使用过的单元格而不是第2行的最后一个使用过的单元格,这就是您所说的。

last_col的值为10.表达式"=" & last_col & "1"的值为=101,因为Excel不知道您希望10转换为J

你说你很满意:

ActiveSheet.Cells(3, 1).Formula = "=R" & "1" & "C" & last_col

但是这会将单元格A3设置为单元格的值,其中row = 1,column =第6行的最后一列。

我在你的问题中找不到任何内容,或者你的回答表明这就是你想要的。

如果您希望将单元格A3设置为第2行中最后一次使用的单元格的值,就像运行宏时使用:

  Dim last_col As Integer

  With ActiveSheet

    ' Find the column number of the last used cell in row 2
    last_col = .Cells(2, Columns.Count).End(xlToLeft).Column
    ' Set cell C3 = Now value of last of row 2
    .Cells(3, "C").Value = .Cells(2, last_col).Value

  End With

如果希望每次第2行最后一次使用的单元格的值发生更改时单元格C3的值都会更改:

  Dim LastUsedCellAddress As String

  With ActiveSheet

    ' Find address of last used cell in row 2
    LastUsedCellAddress = .Cells(2, Columns.Count).End(xlToLeft).Address
    ' Set cell C3 = Current value of last of row 2
    .Cells(3, "C").Formula = "=" & LastUsedCellAddress

  End With

我希望上面给出足够的解释,让你理解不同陈述的效果,这样你就可以得到你今天和将来想要的东西。