我正在尝试找到一个宏,它将为可变数量的行写一个总和公式。
我在一张相当广泛的表格上有很多章节。每个部分都有一列成本,每一部分都需要一笔总和。但是,这些部分的长度是可变的,所以我不能只写一个总和并将其复制/粘贴到每个部分。
部分堆叠如下:
章节标题
3数据$
萨姆?
章节标题
7 Data $
萨姆?
我有几百个这样做,而且我不想每次都手动写总和公式。我需要求和的范围的下边界相对于公式单元总是相同的,但是上边界是随机数更高的行。有没有办法让宏自动检测该部分的大小,并仅为该范围求和?
答案 0 :(得分:0)
此代码块假定每个部分标题以单词"更正"开头。并且部分之间没有空行(因此任何空白单元格都将填充总和公式)。它还假设数据在A列中。如果您的电子表格没有这样设置,您可以调整它以适应您的情况。请注意,此处的错误检查并不多,因此您必须确保电子表格没有任何问题,或者对代码添加错误检查(例如,如果您的电子表格不以段标题开头,您可能会遇到问题,如果您有没有值的部分 - 这是一个部分标题,然后没有数据 - 您将遇到问题)
Dim wksh as worksheet
Dim last_row as long
Dim curr_start as long
set wksh = thisworkbook.worksheets("<your worksheet name>")
last_row = wksh.cells(wksh.Rows.Count, "A").End(xlUp).Row
for i = 1 to last_row + 1
if wksh.range("A"&i).value=0 or wksh.range("A"&i)="" then
wksh.range("A"&i).formula = "=SUM(A" & curr_start & ":A" & i-1 & ")"
elseif left(wksh.range("A"&i).value, 4)="Corr" then
curr_start = i + 1
endif
next i