Table of contents
如果你使用微软Excel工作了一段时间,你就知道自动填充的重要性。 为了将公式复制到整个行或列,我们使用这种方法。 现在,我们可以通过鼠标手动使用。 但是,如果你有一大行的数据,就很难将任何公式复制到最后一行或列。 你可以使用VBA代码将公式自动填充到最后一行或列,用缓解。
在本教程中,你将学习如何使用VBA代码将公式自动填充到Excel的最后一行。 本教程将通过适当的例子和适当的插图来说明问题。 因此,请与我们保持联系。
下载实践工作手册
自动填充公式到最后一行.xlsm
什么是Excel中的自动填表?
现在,自动填充是微软Excel的一个内置功能,它允许用户用数值、格式或公式自动填充其余的行或列。 当你把光标移到任何单元格的右下角时,你可以识别它。 我们把它称为Excel的自动填充处理程序。
请看下面的截图。
在这里,你可以看到两个数字。 我们将使用Excel中的自动填充功能来填充其余的行。
首先,选择单元格B5:B6的范围。 之后,你会在右下角看到自动填充手柄。
现在,把这个自动填充手柄拖下来。
正如你所看到的,Excel自动填充了其余的单元格。 这就是Excel中自动填充的基本用法。
如何使用Excel VBA的自动填表功能
如果你在一个给定的范围内有大量的行或列,你必须把自动填充手柄拖到最后一行或一列。 这是一个非常忙碌的过程。 幸好你可以使用Excel中的VBA代码把它降到最低。 你可以使用VBA代码来自动填充单元格的值、公式或格式。
通用语法。
范围.自动填充目的地,类型
在这里。
Range("B5")。 有主要图案的单元格,以填补系列的其余部分。
目的地。 你想用图案系列填充的单元格范围。
类型为xlAutoFillType。 系列填充类型。 有各种自动填充类型可以选择。
阅读更多。 如何在Excel中使用VBA自动填表
Excel VBA中的4种自动填表类型
在本节中,我将讨论一些自动填写的类型。 我们已经看到,我们可以使用 xl自动填充类型。 在这里,我向你展示一些例子。
1. xlFillDefault
在前面的例子中,我们已经看到了这种类型的自动填表。
看一下屏幕截图。
键入以下VBA代码来自动填充其余的单元格。
Sub xlDefault_type() Range("B5:B6").AutoFill Destination:=Range("B5:B11"), Type:=xlFillDefault End Sub
现在,运行VBA宏,之后,你会看到以下内容。
它使用VBA宏自动填充其余的单元格。
2. xlFillCopy
要复制相同的值,你可以使用类型 xlFillCopy 在自动填充类型中。
看一下屏幕截图。
键入以下VBA代码来自动填充其余的单元格。
Sub xlFillCopy_type() Range("B5:B6").AutoFill Destination:=Range("B5:B11"), Type:=xlFillCopy End Sub
现在,运行VBA宏,之后,你会看到以下内容。
Excel用同样的数值模式来填充其余的单元格。
3. xlFillMonths
你也可以用以下方法填写月份 xlFillMonths 自动填充类型。
看一下屏幕截图。
在这里,我们已经进入了一月和二月两个月。
键入以下VBA代码来自动填充其余的单元格。
Sub xlFillMonths_type() Range("B5:B6").AutoFill Destination:=Range("B5:B11"), Type:=xlFillMonths End Sub
现在,运行VBA宏,之后,你会看到以下内容。
Excel会自动理解这些模式并将其填入其中。
4. xlFillFormats
你也可以使用VBA自动填充法将格式复制到其他单元格。 为此,你必须使用 xlFillFormats 自动填充类型。
看一下屏幕截图。
在这里,我们用一些颜色填充了这两个单元格。
现在,键入以下VBA代码来自动填充其余的单元格。
Sub xlFillFormats_type() Range("B5:B6").AutoFill Destination:=Range("B5:B11"), Type:=xlFillFormats End Sub
现在,运行VBA宏,之后,你会看到以下内容。
正如你所看到的,我们的VBA宏使用自动填充功能来有效地填充B列的行。
阅读更多。 如何在Excel中自动填写月份
Excel VBA中自动填充公式到最后一行的5个例子
1.通过VBA将公式自动填充到最后使用的行中
同样,你可以使用VBA自动填充公式。如果你已经阅读了前面的章节,你可以很容易地执行。 当你必须将公式自动填充到最后一行时,问题就出现了。 你必须先确定最后使用的行。 之后,VBA代码会自动填充它们。
看一下下面的数据集。
在这里,我们有一个一些销售人员的销售数据集。 我们的目标是将1月和2月的销售额添加到总列中。 之后,我们将使用VBA对Excel中最后使用的行进行自动填充的方法。
要执行这个,请输入以下代码。
Sub last_used_row() Dim last_row As Long last_row = Cells(Rows.Count, 2).End(xlUp).Row Range("E5").Formula = "=SUM(C5:D5)" Range("E5") .AutoFill Destination:=Range("E5:E" & last_row) End Sub
last_row = Cells(Rows.Count, 2).End(xlUp).Row: 它返回B列中最后使用的行,你可以从你的数据集中选择任何列。
Range("E5").Formula = "=SUM(C5:D5)" 。 我们加入了以下的销售 细胞C5 和 D5.
Range("E5").AutoFill Destination:=Range("E5:E" & last_row): 得到结果后,我们使用自动填表。 它开始自动填表,从 细胞E5 到我们之前得到的最后使用的行。
现在,运行VBA宏,之后,你会看到以下输出。
正如你所看到的,我们的VBA代码将第一个结果和自动填充公式添加到Excel的最后一行。
阅读更多。 如何在Excel中把数据填到最后一行
2.VBA自动填表从活动单元格到最后一行
现在,如果你不想在自动填充方法中使用特定的范围,你可以使用活动单元格的值、公式或格式。 当你点击一个单元格,想用活动单元格的公式自动填充其余行时,请使用这种方法。
这与之前的例子类似。 我们使用的是之前的数据集。
现在,我们将添加1月和2月的销售额,并使用Excel VBA将公式自动填充到最后一行。
现在,输入以下代码。
Sub autofill_active_cell() Dim last_row As Long last_row = Cells(Rows.Count, 2).End(xlUp).Row ActiveCell.Formula = "=SUM(C5:D5)" ActiveCell.AutoFill Destination:=Range(ActiveCell.Address & " : E" & last_row) End Sub
last_row = Cells(Rows.Count, 2).End(xlUp).Row: 它返回B列中最后使用的行,你可以从你的数据集中选择任何列。
ActiveCell.Formula = "=SUM(C5:D5)"。 我们加入了以下的销售 细胞C5 和 D5 在你选择的单元格中。
ActiveCell.AutoFill Destination:=Range(ActiveCell.Address & ":E" & last_row)。 得到结果后,我们使用自动填充功能,它开始从活动单元格自动填充到我们之前得到的最后使用的行。
现在,选择 细胞E5 .
之后,运行VBA宏,将公式和自动填充添加到最后一行。
正如你所看到的,我们成功地使用VBA宏将公式自动填充到最后一行。
类似读物
- 如何在Excel中重复指定次数的行(4种方法)
- 在Excel中自动计算行数(8种方法)
- 如何在Excel中用相同的值填充列(9个技巧)
- 在Excel中应用自动填表快捷方式(7种方法)
3.用Excel VBA的动态范围自动填充到最后一行
之前我们向大家展示了一些自动填充到Excel最后一行的VBA宏。 现在,在这些例子中,我们已经使用了动态范围。
要了解静态范围,请看以下代码。
Sub last_used_row() Range("E5").Formula = "=SUM(C5:D5)" Range("E5").AutoFill Destination:=Range("E5:E11") End Sub
我们基本上是告诉Excel将一个公式输入到 细胞E5 并自动填充它,从 细胞E5 至 细胞E11 这里,我们指定了范围。 如果你增加了更多的行呢? 在这种情况下,我们的VBA不会自动填充这些额外的行,因为我们已经告诉它要自动填充一个特定的范围。
为了解决这个问题,我想出了一个可以采取动态范围的解决方案。
Sub last_used_row() Dim last_row As Long last_row = Cells(Rows.Count, 2).End(xlUp).Row Range("E5").Formula = "=SUM(C5:D5)" Range("E5") .AutoFill Destination:=Range("E5:E" & last_row) End Sub
你可以看到,我们首先通过这行代码找到最后一行。
last_row = Cells(Rows.Count, 2).End(xlUp).Row
之后,我们使用动态范围自动填充到最后一行。
Range("E5").AutoFill Destination:=Range("E5:E" & last_row)
无论你向你的数据集添加多少行,这段VBA代码都能成功地识别它们。 并且它将用公式自动填充它们。
动态范围基本上意味着你不需要手动输入范围。 Excel会不时地更新它。
阅读更多。 Excel VBA:范围类的自动填充方法失败了
4.使用VBA在Excel中自动填充到最后一列
如果你已经阅读了前面的自动填充到最后一行的章节,那么你就可以轻松地自动填充到最后一列。 你只需要找到最后一列的编号,然后用Excel VBA自动填充。
看一下下面的数据集。
这里,我们有一个数据集,代表一个人3个月的预算。 现在,我们将把所有月份的支出加在一起,并使用Excel VBA将公式自动填充到最后一列。
现在,输入以下代码。
Sub last_used_column() Dim last_row As Long last_column = Cells(6, Columns.Count).End(xlToLeft).Column Range("D9").Formula = "=SUM(D6:D8)" Range("D9").AutoFill Destination:=Range("D9", Cells(9, last_column)) End Sub
last_column = Cells(6, Columns.Count).End(xlToLeft).Column。 它从第6行返回最后使用的列。 你可以选择任何行从你的数据集开始。
Range("D9").Formula = "=SUM(D6:D8)" 。 我们加入了以下费用 三个月(一月、二月、三月)。
Range("D9").AutoFill Destination:=Range("D9", Cells(9, last_column))。 得到结果后,我们使用自动填充。 在这里,我们的主行是第9行。 我们所有的数据都将在这一行。 它从第1列开始自动填充。 D 到最后使用的列,我们之前通过 最后一栏 .
运行该宏后,你将看到以下输出。
正如你所看到的,我们成功地使用VBA将公式自动填充到Excel的最后一列。
阅读更多。 如何在Excel中自动填充一列
5.使用VBA在Excel中自动填写最后一行的顺序号
你也可以使用VBA中的自动填充功能来自动填充连续的数字。 这里,你必须使用 xlFillSeries 在自动填充类型中,Excel会理解该模式并将其填入。
请看下面的屏幕截图。
在这里,我们有一些名字,我们想按顺序给他们一个ID。 为了做到这一点,我们将使用VBA自动填充。
用静态范围自动填写序列号。
Sub sequential_number_2() Range("C5").AutoFill Destination:=Range("C5:C11"), Type:=xlFillSeries End Sub
运行该代码后,你会看到输出。
如果你想使用动态范围,那么请使用以下代码。
Sub sequential_number_1() Dim last_row As Long last_row = Cells(Rows.Count, 2).End(xlUp).Row Range("C5").AutoFill Destination:=Range("C5:C" & last_row), Type:=xlFillSeries End Sub
last_row = Cells(Rows.Count, 2).End(xlUp).Row: 它返回B列中最后使用的行。
Range("C5").AutoFill Destination:=Range("C5:C" & last_row), Type:=xlFillSeries: 它将采取ID为 细胞C5 并自动填充到列中最后使用的一行 C 使用 xlFillSeries ,
在这两种情况下,你将得到相同的输出。
正如你所看到的,我们成功地使用VBA代码在Excel中自动填充连续的数字。
阅读更多。 Excel公式填入序列号跳过隐藏行的方法
💬 需要记住的事情
✎ 你可以 停止自动填表 不求有功,但求无过 .
✎ 你不能同时自动填写多行和多列。 请逐一填写。
总结
最后,我希望本教程为你提供了使用VBA代码将公式自动填充到最后一行的有用知识。 我们建议你学习并将所有这些说明应用于你的数据集。 下载练习工作簿并自己尝试这些。 此外,欢迎在评论区提出反馈意见。 你的宝贵反馈使我们有动力创造类似的教程。这一点。
不要忘记查看我们的网站 独家专访 遇到各种与Excel有关的问题和解决方案。
不断学习新方法,不断成长!