Excel VBA 自动填充问题

Posted

技术标签:

【中文标题】Excel VBA 自动填充问题【英文标题】:Excel VBA Autofill trouble 【发布时间】:2018-09-13 13:50:32 【问题描述】:

我想将公式自动填充到最后一行。 如果我只选择一列,它可以正常工作,但如果我选择包含行和列的更大范围,则函数不会填充第一行或第一列。有人知道为什么吗?

第一个代码 sn-p 就像它应该的那样工作:

If Not Intersect(Target, Range("V1")) Is Nothing Then
    wsPlan.Range("V4").Formula = "=IFERROR(INDEX(Data!$I:$I,MATCH(VALUE(ROW()&V$2),Data!$A:$A,0)),"""")"
    Range("V4").AutoFill Destination:=Range("V4:V" & Range("E" & Rows.Count).End(xlUp).Row)
End If

第二个省略了第 V 列和第 4 行,有什么想法吗?

If Not Intersect(Target, Range("V1")) Is Nothing Then
    wsPlan.Range("V4").Formula = "=IFERROR(INDEX(Data!$I:$I,MATCH(VALUE(ROW()&V$2),Data!$A:$A,0)),"""")"
    Range("V4").AutoFill Destination:=Range("V4:X" & Range("E" & Rows.Count).End(xlUp).Row)
End If

【问题讨论】:

这段代码在哪里?模块或工作表代码表?为什么你在一行中指定 wsPlan 而不是另一行? 代码在工作表中,因此它引用了相同的单元格。我会更新它们,使它们在代码中是相同的,谢谢。 使用自动填充它的工作方式就像您使用 Excel 中的单元格角来填充一样,并且不喜欢两种方式填充。不幸的是,它是列或行,而不是两者结合。 【参考方案1】:

一次写出所有的公式。自动填充不能很好地处理两个方向的填充。

If Not Intersect(Target, Range("V1")) Is Nothing Then
    with wsPlan
        'write all of the formulas into V:X
        .Range(.cells(4, "V"), .cells(.rows.count, "E").end(xlup).offset(0, 19)).Formula = _
            "=IFERROR(INDEX(Data!$I:$I, MATCH(VALUE(ROW()&V$2), Data!$A:$A, 0)), text(,))"
    end with
End If

【讨论】:

谢谢您的澄清。您的解决方案效果很好,但我最终使用了两个自动填充,因为感觉更快。

以上是关于Excel VBA 自动填充问题的主要内容,如果未能解决你的问题,请参考以下文章

自动填充中断一条记录 [Excel-VBA]

Excel VBA 跨列自动填充

Excel VBA自动填充只返回公式

Excel VBA 代码上的自动填充错误

自动填充 Application.Countifs.Formula VBA Excel

Excel VBA自动填充未填充第一行和第一列