复制一行并仅粘贴那些包含公式的单元格
Copy a Row and Paste only those Cells that contains Formula
我有一个命名范围。我正在通过代码插入一个新行并调整命名范围的大小。
有些列包含公式,有些包含值。
我想从上面的单元格中复制公式。
下面是我的代码:
Sub InsertRow()
Dim lrInputRange As Long
Set wbMacro = ThisWorkbook
Set wsInput = wbMacro.Sheets("INPUT")
'Insert new row at bottom
lrInputRange = wsInput.Range("Input_Range").Rows.Count
wsInput.Rows(lrInputRange + 1).EntireRow.Insert shift:=xlUp
wsInput.Rows(lrInputRange).EntireRow.Copy
wsInput.Rows(lrInputRange + 1).PasteSpecial xlPasteFormats
wsInput.Rows(lrInputRange).EntireRow.Copy
'Here I want to paste only those cells that contains Formulas
Application.CutCopyMode = False
'Resize the range
ThisWorkbook.Names.Add Name:="Input_Range", _
RefersTo:=Range("Input_Range").Resize(Range("Input_Range").Rows.Count + 1)
End Sub
使用 SpecialCells()
到 select 个没有公式的单元格并清除它们:
... your previuous code
wsInput.Rows(lrInputRange).EntireRow.Copy
wsInput.Rows(lrInputRange + 1).PasteSpecial
wsInput.Rows(lrInputRange + 1).SpecialCells(xlCellTypeConstants).ClearContents
'Resize the range
. rest of your code
你应该按照下面的方式做
wsInput.Rows(lrInputRange).EntireRow.SpecialCells(xlCellTypeFormulas).复制
Range.pastespecial xlpastevalues
萨西
我有一个命名范围。我正在通过代码插入一个新行并调整命名范围的大小。 有些列包含公式,有些包含值。 我想从上面的单元格中复制公式。 下面是我的代码:
Sub InsertRow()
Dim lrInputRange As Long
Set wbMacro = ThisWorkbook
Set wsInput = wbMacro.Sheets("INPUT")
'Insert new row at bottom
lrInputRange = wsInput.Range("Input_Range").Rows.Count
wsInput.Rows(lrInputRange + 1).EntireRow.Insert shift:=xlUp
wsInput.Rows(lrInputRange).EntireRow.Copy
wsInput.Rows(lrInputRange + 1).PasteSpecial xlPasteFormats
wsInput.Rows(lrInputRange).EntireRow.Copy
'Here I want to paste only those cells that contains Formulas
Application.CutCopyMode = False
'Resize the range
ThisWorkbook.Names.Add Name:="Input_Range", _
RefersTo:=Range("Input_Range").Resize(Range("Input_Range").Rows.Count + 1)
End Sub
使用 SpecialCells()
到 select 个没有公式的单元格并清除它们:
... your previuous code
wsInput.Rows(lrInputRange).EntireRow.Copy
wsInput.Rows(lrInputRange + 1).PasteSpecial
wsInput.Rows(lrInputRange + 1).SpecialCells(xlCellTypeConstants).ClearContents
'Resize the range
. rest of your code
你应该按照下面的方式做
wsInput.Rows(lrInputRange).EntireRow.SpecialCells(xlCellTypeFormulas).复制 Range.pastespecial xlpastevalues
萨西