使用CONCATENATE在excel vba中填充总和公式

时间:2016-07-14 11:37:33

标签: excel vba excel-vba

我有一个电子表格,其中包含特定年份的数字,然后是该年份的小计。

screenshot of example

一年中的实例数可能会有所不同,可能会有一年不存在,即2018可能会被跳过。总计行的标题总是" FYXX Totals。"我有一个遍历整个列的for循环,并寻找" FY"然后,如果它属于三个类别之一(FY1-FY2,FY3-FY7,FY3-FY9;这些是代表一年的变量)。我需要的是循环将D,E,F列中的数字相加...当" FY"找到了。我认为使用CONCATENATE可能是要走的路,但我不确定a)究竟该怎么做或b)如果这是最好的方法。

Dim rng As Range
Dim SumRow As Integer

Set rng = Range("C4:C" & NextRow)

For Each cell In rng
If Left(cell.Value, 2) = "FY" Then
    If 2000 + Int(Mid(cell.Value, 3, 2)) <= FY2 Then 'This is the if statement for the fisrt category
        'Here would be the sum function when the if statement is triggered
    End If

    End If
Next cell

非常感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

SpreadSheet_Picture

第二个if循环(现在为第一个类别编写)需要将FY17 Total旁边的D列中的零加起来。请记住,有时可能存在FY18的行,所以这个宏必须能够抓住它,如果它存在的话。但在这种情况下,必须进入单元格“D”&amp; NextRow将= SUM(D5)。

答案 1 :(得分:0)

我最好的理解是,您希望在D列的每个单元格中放置一个公式,其中C列中的单元格包含FYxx Total,其中xx符合某些其他标准。该公式应包含D列中所有单元格的总和,其中C列对应行中的单元格包含相同的FYxx值。

我能想到的最简单的方法是使用SUMIF函数:

sumif example

单元格D3中的公式=SUMIF(B$2:B$999,LEFT(C3,4),D$2:D$999)计算列D中所有单元格的总和,其中列B的相应行中的单元格与标准匹配,即等于单元格C3的前四个字符。

除非在B列的其他地方存在相同FYxx值的其他实例,SUMIF的第一个和第三个参数中的范围可以涵盖整个表格,我已假设这里扩展到第999行,因此您可以为放置此公式的每个单元格保留相同的内容。您只需要在第二个参数中更改C列中单元格的行。

事实上,如果你真的想要,你可以在D列的每个Total单元格中放置完全相同的公式:

=SUMIF(B$2:B$999,LEFT(INDEX(C$2:C$999,ROW()-1),4),D$2:D$999)

此处INDEX函数根据放置函数的单元格行在C列中查找相应的单元格。