【问题标题】:Excel VBA: Using .Cells() to dynamically reference cell in cell formulaExcel VBA:使用 .Cells() 在单元格公式中动态引用单元格
【发布时间】:2014-08-20 05:22:38
【问题描述】:

我想创建一个引用 B1 等单元格的单元格公式,例如ActiveSheet.Cells(1,x).Formula = "=B1*" & x。但是,我想使用 .Cells 函数而不是 Range 对参考单元格的引用。

给定:

Dim x As Integer 
Dim y As Integer 
x = 5
y = 10

我想要这个:

ActiveSheet.Cells(1,x).Formula = "=" & ActiveSheet.Cells(y,1) & "*" & x 

提供与以下相同的输出:

ActiveSheet.Cells(1,x).Formula = "=B" & y & "*" & x

理想情况下,我希望能够动态更改我在公式中引用的单元格的行和列。但是,我仍然希望单元格在公式中显示为一个单元格,而不仅仅是引用单元格的值。

【问题讨论】:

  • 您遇到了什么问题?
  • 您可以使用.Address 获取单元格的地址而不是其公式 - 例如,ActiveSheet.Cells(y,1).Address(False, False)
  • 好的,我知道.Address 在避免获取公式方面是如何工作的,但是如果我使用.Address,这个:ActiveSheet.Cells(1,x).Formula = "=" & ActiveSheet.Cells(y,1).Address(False, False) 会给我同样的:ActiveSheet.Cells(1,x).Formula = "=B" & y & "*" & x,提供 x = 5 和 y = 10?
  • ^经过测试,好像可以了!
  • @rdhs 你如何设置ActiveSheet.Cells(y,1).Address(False, False) 等于一个变量。它是什么对象类型?范围? (我尝试将其设置为一个范围,但它不起作用)

标签: excel vba dynamic range formula


【解决方案1】:

如果我没看错,那么您的问题是您希望将单元格编号映射到其单元格名称;类似这样:

ActiveSheet.Cells(1,x).Formula = "=" & Chr(Ord("A") + 1) & y & "*" & x

请记住,这仅适用于前 26 列,之后您需要找到更好的解决方案。

【讨论】:

    猜你喜欢
    • 2015-12-05
    • 1970-01-01
    • 2015-01-09
    • 1970-01-01
    • 1970-01-01
    • 2018-10-15
    • 1970-01-01
    • 2018-12-19
    • 2017-04-18
    相关资源
    最近更新 更多