Excel VBA的VLOOKUP无法完全向下填充,仅到1893行如何解决?
解决思路
问题根源
你当前用Range("A2").End(xlDown).Row获取最后一行的逻辑存在缺陷:这个方法会从A2开始向下查找,遇到第一个空单元格就停止计数,哪怕该空单元格之后还有数据(比如你提到的A1894有数据,大概率是A列前1893行连续,但中间存在隐藏的空行、或者单元格包含不可见的空值)。
修复方案
替换最后一行的获取方式
改用从A列最底部往上查找的逻辑,确保拿到A列真正的最后一行数据:Dim LastRow As Long LastRow = Cells(Rows.Count, "A").End(xlUp).Row移除多余的
FillDown代码
直接给Range("B2:B" & LastRow).Formula赋值的操作,本身就会把公式填充到整个指定范围,额外的FillDown完全是冗余的,删掉即可。可选:优化代码效率
可以一次性给B、C、D三列批量赋值公式,减少代码行数并提升运行效率:'Enter Vlookups to get Invoice, InternalID, Status Dim LastRow As Long LastRow = Cells(Rows.Count, "A").End(xlUp).Row Range("B2:D" & LastRow).Formula = Array( _ "=VLOOKUP(A2,NS!A:N,2,0)", _ "=VLOOKUP(A2,NS!A:N,3,0)", _ "=VLOOKUP(A2,NS!A:N,4,0)" _ )
验证
修改后重新运行代码,公式会自动填充到A列所有有数据的行,包括A1894及之后的行。
内容的提问来源于stack exchange,提问作者Ingrid Potter
相关产品推荐
相关产品推荐

