使用 VBA 插入一行并自动填充
Posted
技术标签:
【中文标题】使用 VBA 插入一行并自动填充【英文标题】:Insert a row and autofill using VBA 【发布时间】:2017-04-03 12:17:16 【问题描述】:我有一个在电子表格中插入一行的宏,我希望它自动填充新插入行中的公式。
这是我的电子表格中的一个示例。
编辑:在我目前的电子表格中有 10 列和几行,但下面我只复制了一列
ColumnB
TextA
TextA
TextA
TextA
TextB
TextB
TextB
TextB
TextC
TextC
TextC
TextC
以下代码在TextA
、TextB
、TextC
等之后添加一个新行
Sub Insert()
Dim LastRow As Long
Dim Cell As Range
Application.ScreenUpdating = False
LastRow = Sheets("Sheet1").Cells(Rows.Count, 1).End(-4162).Row
For Each Cell In Sheets("Sheet1").Range("B7:B" & LastRow)
If Cell.Value <> Cell.Offset(1, 0) Then
If Cell.Value <> "" Then
Sheets("Sheet1").Rows(Cell.Row + 1).Insert
End If
End If
Next Cell
Application.ScreenUpdating = True
End Sub
有没有办法自动填充公式?
我想在我的循环中插入一行代码,如下所示,就在添加新行之后。这个问题是Range
参数。我不知道在其中指定什么
Selection.AutoFill Destination:=Range("A21:J22"), Type:=xlFillDefault
【问题讨论】:
添加类似 range(cell,cell.offset(1,0)) 【参考方案1】:你可以试试这样的……
Sub Insert()
Dim LastRow As Long
Dim LastCol As Long
Dim i As Long
Dim Cell As Range
Application.ScreenUpdating = False
LastRow = Sheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row
'Assuming Row6 is the header row
LastCol = Sheets("Sheet1").Cells(6, Columns.Count).End(xlToLeft).Column
For i = LastRow To 8 Step -1
If Cells(i, 2) <> "" And Cells(i, 2) <> Cells(i - 1, 2) Then
Range(Cells(i - 1, 1), Cells(i - 1, LastCol)).Copy
Cells(i, 1).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Range(Cells(i, 1), Cells(i, LastCol)).SpecialCells(xlCellTypeConstants, 3).ClearContents
End If
Next i
Application.ScreenUpdating = True
End Sub
【讨论】:
【参考方案2】:如您所知,您可以在“下一个单元格”语句之后插入以下任何方法:
Excel.Cells.Range("B7:B" & LastRow).Value = "=MOD(OFFSET(A7,-1,0)+ (A6<>OFFSET(A6,-1,0)),2)" 'or any function you like, e.g. '=SUM(A1+A2)'
Excel.Cells.Range("B7:B" & LastRow).Value = "0"
Excel.Cells.Range("B7:B" & LastRow).NumberFormat = "General"
Excel.Cells.Range("B7:B" & LastRow).FormatConditions.Add(Excel.XlFormatConditionType.xlExpression, Formula1:="=B6=1")
【讨论】:
以上是关于使用 VBA 插入一行并自动填充的主要内容,如果未能解决你的问题,请参考以下文章