我有一个电子表格,其中包含特定年份的数字,然后是该年份的小计。
一年中的实例数可能会有所不同,可能会有一年不存在,即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
非常感谢您的帮助。
答案 0 :(得分:0)
第二个if循环(现在为第一个类别编写)需要将FY17 Total旁边的D列中的零加起来。请记住,有时可能存在FY18的行,所以这个宏必须能够抓住它,如果它存在的话。但在这种情况下,必须进入单元格“D”&amp; NextRow将= SUM(D5)。
答案 1 :(得分:0)
我最好的理解是,您希望在D列的每个单元格中放置一个公式,其中C列中的单元格包含FYxx Total
,其中xx
符合某些其他标准。该公式应包含D列中所有单元格的总和,其中C列对应行中的单元格包含相同的FYxx
值。
我能想到的最简单的方法是使用SUMIF
函数:
单元格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列中查找相应的单元格。