excel - 范围自动填充一行,最好只使用变量
问题描述
我想只选择从 B 到 Z 的最后一行(这是唯一包含公式的行。)这个范围应该只自动填充一行,并且只制作倒数第二行的值(意思是删除公式)。所以最后一行应该总是有公式。
如下所示的数据集:
A B C ..... Z
1 1 2 2 ......26
2 1 2 2 ......26
3 1 2 2 ......26
4 1 2 2 ......26
5 1 2 2 ......26
所以代码应该从 B5:Z5 中选择并自动填充一行。
我已经尝试了以下代码,它给了我一个运行时错误。
Sub autofilllastrow()
Dim Lastrow As Integer
Dim Lastrange As Range
Lastrow = ActiveWorkbook.Worksheets("sheet1").Cells(Rows.Count, 2).End(xlUp).Row
Range("B" & Lastrow, "Z" & Lastrow).Select
Lastrange.AutoFill Destination:=Range("B" & Lastrow + 1, "Z" & Lastrow + 1)
End Sub
我应该如何正确定义目标部分并只制作倒数第二行的值?
解决方案
Sub autofilllastrow()
Dim lr As Long
With ThisWorkbook.Worksheets("Sheet1")
lr = .Cells(.Rows.Count, 2).End(xlUp).Row
.Range(.Cells(lr + 1, 2), .Cells(lr + 1, 26)).FillDown
.Range(.Cells(lr, 2), .Cells(lr, 26)).Value = .Range(.Cells(lr, 2), .Cells(lr, 26)).Value
End With
End Sub
- 不使用
.Select
- 用
Long
数据类型代替Integer
FillDown
代替AutoFill
或者,如果您热衷于设置Range
变量:
Sub autofilllastrow()
Dim lr As Long, rng As Range
With ThisWorkbook.Worksheets("Sheet1")
lr = .Cells(.Rows.Count, 2).End(xlUp).Row
Set rng = .Range(.Cells(lr, 2), .Cells(lr, 26))
rng.Offset(1).FillDown
rng.Value = rng.Value
End With
End Sub
推荐阅读
- python - 如何检查熊猫中的两列在逻辑上是否相同?
- rust - 在没有发送/同步特征的结构上采用 AtomicPtr
- android - 使用 AlarmManager 崩溃时 Android 应用程序重新启动
- selenide - 如何在 Selenide 中按类名切换到帧?
- python-3.x - 将参数 url 更改为本地 ( raise ValueError("unknown url type: %r" % self.full_url))
- javascript - How to extract property values in string form, to loop over them
- java - InfluxDB 异常:org.influxdb.InfluxDBException: {"code":"unauthorized","message":"Unauthorized"}
- javascript - 计算对象数组中值的总和
- python - pandas.io.sql.DatabaseError:sql'utf-8'编解码器执行失败无法解码位置0的字节0xa0:无效的起始字节
- php - 如何进行 cron 作业以从 PHP Smarty Index.tpl 保存到 Index.html?