基于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)
答案 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