【问题标题】:Formula with dynamic reference to a specific cell动态引用特定单元格的公式
【发布时间】:2022-01-22 17:20:04
【问题描述】:

在以下表达式中,我想将 B2 动态设置为指向要插入公式的右侧单元格:

WS1.Cells(4 + j - 1, 3 + ((i - 1) * 9)).Formula = "=VLOOKUP(B2;WS2!B:C;2;FALSE)"

我怎样才能做到这一点?

【问题讨论】:

  • 如果您没有定义 dynamic 在您的上下文中的含义,那么没有人可以帮助您。您要引用放置公式的行吗?是否要将“B”替换为位于编写公式的那一列之前/之后的一列?这种动态现在只在你的脑海中清晰,恐怕......

标签: excel vba dynamic excel-formula


【解决方案1】:

如果dynamic的意思是在与接收公式的单元格相同的行引用“B”,请尝试下一种方式:

WS1.Cells(4 + j - 1, 3 + ((i - 1) * 9)).Formula = "=VLOOKUP(B" & 4 + j - 1 & ",WS2!B:C,2,FALSE)"

VBA 使用逗号作为列表分隔符,与本地化无关,您应该使用逗号...

已编辑: 为了在公式中使用公式所在单元格左侧的单元格,请尝试下一种方法:

WS1.cells(4 + j - 1, 3 + ((i - 1) * 9)).Formula = _
    "=VLOOKUP(" & WS1.cells(4 + j - 1, 3 + ((i - 1) * 9) - 1).Address(0, 0) & ",WS2!B:C,2,FALSE)"

【讨论】:

  • 如果我想在 vlookup 中参数化“B”怎么办?我尝试使用 "=VLOOKUP(" & W1.Cells(4 + j - 1, 4 + ((i - 1) * 9)) & ",WS2!B:C,2,FALSE)" 但它返回空白
  • @Gimmy88 你问的问题没有多大意义,如果你不解释“参数化”应该是什么意思......我在澄清评论中尝试了一些拘留的例子。我只是在敢于回答时才尝试猜测您想要什么...
  • 我的意思是,在我的第一个问题中,(正确的)vlookup 语句是“=VLOOKUP(B" & 4 + j - 1 & ",WS2!B:C,2,FALSE)",意思是该行将始终为“B”,列将根据循环计数器更改。现在,如果我还想根据循环计数器更改列怎么办?我试过 "=VLOOKUP(" & W1.Cells(4 + j - 1, 4 + ((i - 1) * 9)) & ",WS2!B:C,2,FALSE)" 但它返回空白而不是行列名,那么如何实现呢?
  • @Gimmy88 恐怕你说的不太对...列是B:B,行改变根据所属到要放置公式的单元格。现在,基于什么来参数化列(而不是基于 B)?然后,您之前的请求需要一个Long 号码来“理解”必要的行。为了使用列字母,我可以向您展示如何操作,但前提是 我将能够理解您想要的内容。只尝试某事而不了解它应该做什么,这不是一种学习方式,我认为......
  • @Gimmy88 如果你在大约 5 分钟内告诉我你想要什么,我会尽力帮助你。否则,我将离开我的办公室,几个小时后我会在家。无论如何,如果您提出一个新问题,询问您需要什么,正如我们的社区规则所述,如果我不能有空,其他人可能会帮助您。但是您必须知道您想要什么以及如何解释,以使我们了解您的需求......
猜你喜欢
  • 2017-07-06
  • 1970-01-01
  • 2017-01-06
  • 1970-01-01
  • 1970-01-01
  • 2021-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多