首页 > 解决方案 > 搜索行,在标题中找到“搜索”名称下方创建公式,将公式复制到最后一行

问题描述

从单元格 B5 开始,在 ROW 中搜索“当前月份”。在此列中,从“当前月份”标题下方的单元格(这次是 L6)开始,创建一个引用该列左侧一列的公式,“=K6”。

此公式将沿列向下继续,直到最后一行。由于每月都会添加最新的月份财务结果,因此该列将每月更改。目前,MainAccount、DEPT、Dep Lookup、PROD、PROD_LINE、RD_CAT、1 月、2 月、3 月、4 月、当前月份和 YTD 是当前标题,因为我正在处理 4 月月底的结果。“当前月份”目前在工作表的 L 列中,下个月将在 M 列中。基本上,这为我提供了当前月份的费用,这些费用将用于更新我不必更改的各种数据透视表每个月的月度数据。

我想我被代码的 ActiveCell 部分绊倒了,但我不确定。

    Range "B5").Select                                                           Range(Selection, Selection.End xltoRight)).Select                               
Selection.Find(What:="Current Month", After:=ActiveCell, LookIn:= _
    xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
    xlNext, MatchCase:=False, SearchFormat:=False).Activate                     
ActiveCell.Offset(1).Select                                                     
ActiveCell.FormulaR1C1 = "=RC[-1]"                                              

LR2 = Cells(Rows.Count, "A").End(xlUp).Row
Set Rng2 = Range(ActiveCell & LR2)

ActiveCell.Select
Selection.Copy
Rng2.Select
ActiveSheet.Paste

在当前月份列中,应该有一个公式一直向下引用上个月的页面。在这种情况下,当前月份标题位于 L5,公式将从 L6 开始,即 =k6,然后向下复制到最后一行,它只会将公式复制到空行中,这样我就不会丢失我的标题,因为工作表上有许多范围与数据透视表相关联。

标签: excelvba

解决方案


将您的查找分配给一个范围变量,然后复制整个列,偏移 1 列,然后插入。

Dim fHdr As Range, LR2 As Long

With ThisWorkbook.Sheets("Sheet1") '    
    Set fHdr = .Cells.Find(What:="Current Month", After:=.Cells(5, 2), _
    LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByColumns, _
    SearchDirection:=xlNext, MatchCase:=False)

    LR2 = Cells(Rows.Count, "A").End(xlUp).Row

    If fHdr Is Nothing Then
        Exit Sub

    Else
        With fHdr
            .Offset(1, 1).Resize(LR2 - 2).FormulaR1C1 = "=RC[-1]"
        End With
    End If
End With

推荐阅读