我有一本有两张纸的工作簿。
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
答案 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以恢复您的公式