【问题标题】:How do I use 'Match' to find the first cell at the end of a column in VBA?如何使用“匹配”在 VBA 中的列末尾找到第一个单元格?
【发布时间】:2019-05-01 10:30:47
【问题描述】:

基于 Excel:

我在 Excel 中使用 {=MATCH(0,INT(A:A),0)} 来选择 A 列中最后一个填充单元格之后的第一行(注意最后一个值后跟 0 或空白单元格,这就是我使用 INT()) 的原因。这工作得很好,但是我在 VBA 中复制它时遇到了麻烦。

这将是一个非常简单的修复,但我无法完全理解它!提前致谢

我在 VBA 中的尝试:

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

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    这应该可行:

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

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

    【讨论】:

    • 感谢蒂姆,这就是我所追求的。感谢您的快速回复!
    【解决方案2】:

    在 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
    

    【讨论】:

    • 感谢 Ron 的帮助,但是当列中的值为 0 时(我想忽略),这些并没有考虑到
    • @jwem93 我只是检查该单元格的值是否为零。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 2020-10-05
    • 2019-03-20
    • 2022-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多