如何使用“匹配”在VBA的列末尾找到第一个单元格?

时间:2019-05-01 01:52:41

标签: excel vba

基于Excel的

我在Excel中使用{= MATCH(0,INT(A:A),0)}选择A列中最后一个填充单元格之后的第一行(请注意,最后一个值后跟0或a空白单元格,这就是为什么我使用INT()的原因。这个工作很好,但是我很难在VBA中复制它。

这将是一个非常简单的修复程序,但我不太明白!预先感谢

我在VBA中的尝试:

Application.Match(0, Int(Sheets("Sheet1").Range("A:A").FormulaArray), 0)

2 个答案:

答案 0 :(得分:1)

这应该有效:

Debug.Print Sheets("Sheet1").Evaluate("MATCH(0,INT(A:A),0)")

除非您特别希望在碰巧处于活动状态的工作表的上下文中评估公式,否则请不要使用Application.Evaluate表单。

答案 1 :(得分:0)

在VBA中复制公式不是简单的解决方法,因为它是Excel中的数组公式,并且由于INT函数的存在,您必须遍历每个单元格。

(未经测试)要在VBA中查找列的最后一个单元格,请执行以下操作:

set myCell = Cells(Rows.Count,1).end(xlup)

并找到第一个空单元格:

set myCell = Cells(Rows.Count,1).end(xlUp).Offset(1,0)

当然,就像您在VBA中尝试的那样,对工作表进行资格评定是适当且首选的

With worksheets("Sheet1")
   set myCell = .Cells(.Rows.Count,1).end(xlup)
end with