恢复公式VBA代码

时间:2015-05-13 09:26:28

标签: excel excel-vba vba

所以我有这个问题,在Excel中创建一个按钮来恢复所有公式。这些公式都基于这一个单元格,目前 A26 (=Demand!A2) 。但由于行号将来会发生变化,因此代码目前还不够强大。

它需要做的是输入 标题'命名为" FCST_ID"以下公式: =Demand!A2 。 (请记住它不是一个表格)之后应该选择整行,根据 =Demand!A2 单元格填充许多公式,然后将其完全拉到第6000行。

当我尝试使用宏并选择单元格A26时,它会起作用,但是如果此单元格将更改为A25,则此功能不足以使模型足够强大。所以我现在要做的就是录制一个查找“标题”的宏。 FCST_ID然后向下移动一个单元格,填充公式,然后从该行中下拉所有公式,直到第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

1 个答案:

答案 0 :(得分:1)

这是你正在尝试的(未经测试)?我假设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