尝试根据值查找单元格,然后使用单元格(列)位置作为公式的一部分

时间:2016-11-09 23:56:42

标签: excel vba excel-vba

所以我有这个大电子表格,列和行总是在变化。 我想要做的是根据它的值找到一个单元格,然后在它下面粘贴一个公式。在这种情况下,该值是标题的一部分,因此始终位于同一行。

Sample Data

问题在于我试图将所有值加到单元格的左边。我知道从哪个细胞开始而不是它结束的细胞。在这里我的代码我做错了什么?

Sub OutageManagement()

Dim rngX As Range

Set rngX = Worksheets("WDCap").Range("13:13").Find("MI WD Cap. Reduction",   lookat:=xlPart)

rngX.Offset(2, 0).Formula = "=sum(G15:" & rngX.Column & "15)"

 End Sub

如果你可以帮助我完成下一步的话,可以获得积分

基本上还有另一个标题我需要找到我的第一个标题右侧的标题,然后输入另一个公式,即从第一个标题为+ 3列的位置添加总和到新标题的列是-1。

对不起,如果我没有意义,那就是今天没有意义的事情。

对于那些感兴趣的人,这是我最终使用的代码

Sub WDOutageManagement()
    Dim rngX As Range
    Dim vCell1, vCell2
    LastRow = Range("A" & Rows.Count).End(xlUp).Row   
    Set rngX = Worksheets("WDCap").Range("13:13").Find("MI WD Cap. Reduction", lookat:=xlPart)
        'MI
    vCell1 = Replace(rngX.Offset(2, -1).Address, "$", "")
    rngX.Offset(2, 0).Formula = "=SUM(G15:" & vCell1 & ")"
    Range(rngX.Offset(2, 0), rngX.Offset(LastRow - 13, 0)).FillDown  
    'LM
    vCell1 = Replace(rngX.Offset(2, 5).Address, "$", "")
    Set rngX = Worksheets("WDCap").Range("13:13").Find("LM WD Cap. Reduction", lookat:=xlPart)
    vCell2 = Replace(rngX.Offset(2, -1).Address, "$", "")
    rngX.Offset(2, 0).Formula = "=SUM(" & vCell1 & ":" & vCell2 & ")"
    Range(rngX.Offset(2, 0), rngX.Offset(LastRow - 13, 0)).FillDown
    End Sub

1 个答案:

答案 0 :(得分:1)

如果该单元格是=SUM()公式的一部分,则您无法在单元格中获得值的总和,因此我更改了公式,以获得从G列到1列的值之和到当前专栏的左侧。

然后它会查找第二个标题,并将第一个值总和右侧的值1个单元格获取到第15行第二个标题列左侧的1个单元格。

您可以开始使用此代码:

Sub OutageManagement()

    Dim rngX As Range
    Dim vCell1, vCell2

    Set rngX = Worksheets("WDCap").Range("13:13").Find("MI WD Cap. Reduction", lookat:=xlPart)

    vCell1 = Replace(rngX.Offset(2, -1).Address, "$", "")

    rngX.Offset(2, 0).Formula = "=SUM(G15:" & vCell1 & ")"

    vCell1 = Replace(rngX.Offset(2, 1).Address, "$", "")

    Set rngX = Worksheets("WDCap").Range("13:13").Find("Another Header", lookat:=xlPart)

    vCell2 = Replace(rngX.Offset(2, -1).Address, "$", "")

    rngX.Offset(2, 0).Formula = "=SUM(" & vCell1 & ":" & vCell2 & ")"

End Sub

这是我制作的一些模拟数据。从G15到AP15,我把1.从AR15到BR15,我把2。

enter image description here

在运行宏后显示1的总和,即36,和2的总和,即54。

enter image description here