在基于另一张图纸动态调整大小的一张图纸上复制公式

时间:2018-10-26 14:13:10

标签: excel vba

我有一本有两张纸的工作簿。

Sheet1获取原始数据(它将始终具有不同的列数)。我对原始数据的列进行了重新排列,因为它们的顺序可能与“规范化”它们的顺序不同。 CE列的公式返回True或False。

Sheet2具有从第一张工作表中提取某些数据的公式。

Sheet2上的公式:

Cell A2: IF(Sheet1!CE2,Sheet1!A2,"")
Cell B2: IF(Sheet1!CE2,Sheet1!B2,"")
Cell C2: IF(Sheet1!CE2,Sheet1!C2,"")
etc.

如果我将这些公式放到Sheet2中并向下复制,则当我重新排列Sheet1上的列时,Sheet2公式也会相应更改。

因此,在重新排列Sheet1列之后,我有一个宏可以将所有公式写在Sheet2的第2行上。

我有一个函数可以找到Sheet1的最后一行。

我想将Sheet2公式复制到Sheet1中的相同行数下。

'All of the formulas are in row1
lastRow = GetLastRow() 'This successfully retrieves a Long with the last row# of Sheet1

'Be sure am on correct sheet
Sheets("Sheet2").Select

'Copy the formulas
Range("A2:O2").Select
Selection.Copy

'Paste the formulas to the range
'THIS BLOWS UP
Sheet2.Range(startCell, ws1.Cells(lastRow, "O")).Select
ActiveSheet.Paste

2 个答案:

答案 0 :(得分:1)

这是一个如何用方程式填充范围的一般示例。这将只看两张纸上的Column A

我正在使用Sheet1 Column A确定最后一行。根据需要更改它。根据需要更新列,并根据需要重复复制.Formula语句以获得所需的结果


请注意,您无需进行任何.Select修改。当您正确限定对象时,VBA对活动工作表无动于衷。

Option Explicit

Sub PhilNye()

Dim ws1 As Worksheet: Set ws1 = ThisWorkbook.Sheets("Sheet1")
Dim ws2 As Worksheet: Set ws2 = ThisWorkbook.Sheets("Sheet2")

Dim LRow As Long
LRow = ws1.Range("A" & ws1.Rows.Count).End(xlUp).Row

ws2.Range("A2:A" & LRow).Formula = "=IF(Sheet1!CE2, Sheet1!A2,"""")" '<-- Duplicate This Statement

End Sub

答案 1 :(得分:0)

或者:在重新排列工作表1之前,根据需要将公式放入工作表2中。然后搜索并替换,将=号更改为空。在禁用公式的情况下重新排列工作表1,然后搜索并替换,将IF更改为= IF以恢复您的公式