下移公式的功能
Function to shift down formulas
我在随机的第一行有几个公式 table。我正在尝试向下移动/将它们复制到下面的多行。部分公式被复制,部分留空
原版Table
我尝试调整大小,但它不适用于 table。
调整大小 Table - headers 被复制,公式被删除。
Sheets(destinationSheet).Rows(startrow + 1 & ":" & startrow + 2).Insert Shift:=xlDown
公式在某些列中被复制,而对于其他列,我得到空白单元格。
我还尝试了不同的代码(在每一行的循环中):
ActiveSheet.Rows(.HeaderRowRange.Row + .ListRows.Count + 1).FillDown '1st example
ActiveSheet.Rows(.HeaderRowRange.Row + .ListRows.Count + 1).Insert '2nd example
.Resize (ActiveSheet.Range(.HeaderRowRange(1, 1), Cells(.HeaderRowRange.Row + .ListRows.Count + 1, .ListColumns.Count + 1)))
第一个示例为所有列正确复制了公式,但覆盖了下面的行(不会每次都创建新行)。
第二个示例在 table 中创建一个新行,但仅复制部分公式。
新样本table比较
也许然后尝试这样的事情:
更快的方法是:
Range("A1:A10").Formula = "=C1+B1"
慢一些..
Range("A1").Formula = "=C1+B1" 'Replace by your formula
Range("A1").Copy
Range("A1:A10").Pastespecial(XlPasteall)
您也可以使用 FillDown :
Range("A1").Formula = "=C1+B1"
Range("A1:A10").FillDown
注意 :更快的方法是第一个命题,因为它会使用公式自动填充(FillDown)范围。
编辑 在你的情况下,这将完美地工作:
ActiveSheet.ListObjects("Tableau1").DataBodyRange.FillDown
通过您的选项卡名称更改 Tableau1.. 这里 DataBodyRange
用于 select 您的 table 数据。
编辑 2 不使用 DataBodyRange
Sub SelectTableBody()
Dim rTableData As Range
With ThisWorkbook.Worksheets(1)
Set rTableData = .ListObjects("Table1").DataBodyRange
Set rTableData = rTableData.Offset(0, 1) _
.Resize(, rTableData.Columns.Count - 2)
End With
rTableData.FillDown
End Sub
我在随机的第一行有几个公式 table。我正在尝试向下移动/将它们复制到下面的多行。部分公式被复制,部分留空
原版Table
我尝试调整大小,但它不适用于 table。
调整大小 Table - headers 被复制,公式被删除。
Sheets(destinationSheet).Rows(startrow + 1 & ":" & startrow + 2).Insert Shift:=xlDown
公式在某些列中被复制,而对于其他列,我得到空白单元格。
我还尝试了不同的代码(在每一行的循环中):
ActiveSheet.Rows(.HeaderRowRange.Row + .ListRows.Count + 1).FillDown '1st example
ActiveSheet.Rows(.HeaderRowRange.Row + .ListRows.Count + 1).Insert '2nd example
.Resize (ActiveSheet.Range(.HeaderRowRange(1, 1), Cells(.HeaderRowRange.Row + .ListRows.Count + 1, .ListColumns.Count + 1)))
第一个示例为所有列正确复制了公式,但覆盖了下面的行(不会每次都创建新行)。
第二个示例在 table 中创建一个新行,但仅复制部分公式。
新样本table比较
也许然后尝试这样的事情:
更快的方法是:
Range("A1:A10").Formula = "=C1+B1"
慢一些..
Range("A1").Formula = "=C1+B1" 'Replace by your formula
Range("A1").Copy
Range("A1:A10").Pastespecial(XlPasteall)
您也可以使用 FillDown :
Range("A1").Formula = "=C1+B1"
Range("A1:A10").FillDown
注意 :更快的方法是第一个命题,因为它会使用公式自动填充(FillDown)范围。
编辑 在你的情况下,这将完美地工作:
ActiveSheet.ListObjects("Tableau1").DataBodyRange.FillDown
通过您的选项卡名称更改 Tableau1.. 这里 DataBodyRange
用于 select 您的 table 数据。
编辑 2 不使用 DataBodyRange
Sub SelectTableBody()
Dim rTableData As Range
With ThisWorkbook.Worksheets(1)
Set rTableData = .ListObjects("Table1").DataBodyRange
Set rTableData = rTableData.Offset(0, 1) _
.Resize(, rTableData.Columns.Count - 2)
End With
rTableData.FillDown
End Sub