【问题标题】:Using VBA to create a dynamic formula using End(xlUp)使用 VBA 创建使用 End(xlUp) 的动态公式
【发布时间】:2020-05-12 16:50:52
【问题描述】:

我正在尝试使用 VBA 在一系列单元格中放置一个公式。我已经编写了执行此操作的公式,并且效果很好,但是,我希望公式是动态的。公式搜索的数据范围是可变的。

我想使用 End(xlUp) 来确定范围。我的代码如下:

Range("P43").FormulaArray = "=IFERROR(INDEX(Input Tigerlijst!$A$2:$A$247,MATCH(1,--(SEARCH(TRANSPOSE(Input Tigerlijst!$A$2:$A$247),O43)>0),0),0),"""")"

我认为的解决方案是:

Range("P43").FormulaArray = "=IFERROR(INDEX(Input Tigerlijst!$A$2:*LastRow*,MATCH(1,--(SEARCH(TRANSPOSE(Input Tigerlijst!$A$2:*LastRow*),O43)>0),0),0),"""")"

我已经搜索和尝试了几个小时,我们将不胜感激。

【问题讨论】:

  • 使用" & LastRow & "代替*LastRow*
  • 我在这篇文章中只使用了 LastRow 来强调 LastRow。放置 & LastRow & 不起作用。
  • 是的,您必须找到最后一行,如图所示Here
  • 谢谢,但我知道 LastRow 是如何工作的,但是在我测试时将 LastRow 放在这样的公式中不起作用
  • 那是因为你不需要最后一行。您还需要列地址。例如$A$2:*LastRow* 应该是$A$2:$A$" & LastRow &

标签: excel vba excel-formula


【解决方案1】:

"=IFERROR(INDEX(Input Tigerlijst!$A$2:$A$247,MATCH(1,--(SEARCH(TRANSPOSE(Input Tigerlijst!$A$2:$A$247),O43)>0),0),0),"""")"

可以写成

"=IFERROR(INDEX(Input Tigerlijst!$A$2:$A$" & "247" & ",MATCH(1,--(SEARCH(TRANSPOSE(Input Tigerlijst!$A$2:$A$" & "247" & "),O43)>0),0),0),"""")"

为了清楚起见

"=IFERROR(INDEX(Input Tigerlijst!$A$2:$A$" & _
"247" & _
",MATCH(1,--(SEARCH(TRANSPOSE(Input Tigerlijst!$A$2:$A$" & _
"247" & _
"),O43)>0),0),0),"""")"`

终于可以写成

"=IFERROR(INDEX(Input Tigerlijst!$A$2:$A$" & _
LastRow & _
",MATCH(1,--(SEARCH(TRANSPOSE(Input Tigerlijst!$A$2:$A$" & _
LastRow & _
"),O43)>0),0),0),"""")"`

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-29
    • 2016-03-10
    • 1970-01-01
    相关资源
    最近更新 更多