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 自动填充问题的主要内容,如果未能解决你的问题,请参考以下文章