还原公式VBA代码

所以我有这个问题与Excel中的一个button,恢复所有公式。 公式都是基于这个单元格的,现在是A26 (=Demand!A2) 。 但是由于行号在将来会改变,所以代码目前还不够健壮。

它需要做的是在名为“ FCST_ID ”的头部下面的单元格input以下公式: =Demand!A2 。 (记住它不是一个表格)之后,应该select整行,填充许多基于=Demand!A2单元格的公式,并将其完全拉下,直到行6000。

当我尝试使用macros并select单元格A26 ,它工作正常,但是,如果此单元格将更改为A25 ,则不会使该模型足够健壮。 所以我现在要做的就是录制一个查找' FCST_ID的macros,然后向下移动一个单元格,填入公式,然后从该行拉下所有的公式,直到第6000行。

将非常感谢任何帮助!

 Cells.Find(What:="FCST_ID", After:=ActiveCell, LookIn:=xlFormulas, _ LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False, SearchFormat:=False).Activate .Offset(1, 0).Select ActiveCell.FormulaR1C1 = "=Demand!R[-24]C" Range("A26").Select Range(Selection, Selection.End(xlToRight)).Select Range("A26:EU26").Select ActiveWindow.SmallScroll ToRight:=2 Selection.AutoFill Destination:=Range("A26:EU6000"), Type:=xlFillDefault Range("A26:EU6000").Select 

这是你正在尝试( 未经testing )? 我假设FCST_ID在Col A.

 Sub Sample() Dim ws As Worksheet Dim lRow As Long Dim aCell As Range Set ws = ThisWorkbook.Sheets("Sheet1") With ws If Application.WorksheetFunction.CountA(.Cells) <> 0 Then lRow = .Cells.Find(What:="*", _ After:=.Range("A1"), _ Lookat:=xlPart, _ LookIn:=xlFormulas, _ SearchOrder:=xlByRows, _ SearchDirection:=xlPrevious, _ MatchCase:=False).Row Set aCell = .Cells.Find(What:="FCST_ID", LookIn:=xlValues, _ Lookat:=xlWhole, SearchOrder:=xlByRows, _ SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False) If Not aCell Is Nothing Then aCell.Offset(1).Formula = "=Demand!A2" .Range("A" & (aCell.Row+1) & ":EU" & (aCell.Row+1)).AutoFill _ Destination:=.Range("A" & (aCell.Row+1) & ":EU" & lRow), Type:=xlFillDefault End If End If End With End Sub