在需要结果的地方输入这个公式:=SUM(Sheet1:Sheet5!A5)
将公式中的Sheet1改为你第一个工作表的名称,Sheet5改为最后一个工作表的名称,
A5改为你要求和的单元格按回车就行了。
这个很简单,问题是特定的单元格是哪些?我假设都是单元格a1,颜色填充红色。
则代码:
sub
宏1()
sheets("sheet1").select
range("a1").select
with
selection.interior
.pattern
=
xlsolid
.patterncolorindex
=
xlautomatic
.color
=
255
.tintandshade
=
0
.patterntintandshade
=
0
end
with
end
sub
以上代码为将sheet1,sheet2以及sheet3三个工作表的a1单元格涂成红色。
不用vba
=sum(sheet1:sheet5!a5)
只要把sheet1改为你第一个工作表的名字,sheet5改为你最后一个工作表的名字即可。
代码如下:
Sub test()
Dim mypath, myfile, wb, i, j
Range("A1").CurrentRegion.Offset(1, 0).ClearContents '开始提取之前清除除表头之外的内容
mypath = ThisWorkbook.Path & "\" '找到当前工作簿的路径
myfile = Dir(mypath & "*.xlsx") '遍历当前路径下的工作簿
Do While myfile <> "" '当找到的文件不为空时
If myfile <> ThisWorkbook.Name Then '当找到的文件不是本工作簿时
Set wb = GetObject(mypath & myfile) '利用GetObject取得数据
With wb.Sheets(1) '对wb的sheet1进行操作
i = .[a1048576].End(xlUp).Row '得到wb的最后一行
j = [a1048576].End(xlUp).Row + 1 '得到当前工作表的最后一行
Range("A" & j) = .Range("A1") '开始赋值了
Range("B" & j) = .Range("B" & i)
Range("C" & j) = .Range("C" & i)
Range("D" & j) = .Range("D" & i)
Range("E" & j) = .Range("E" & i)
Range("F" & j) = .Range("F" & i)
End With
wb.Close '别忘了关掉,要不然越开越多电脑就瘫痪了
End If
myfile = Dir '去找下一个工作簿
Loop
End Sub
汇总的表要和那些明细表放同一个文件夹下,这样就可以用mypath = ThisWorkbook.Path & "\" 取得文件夹的路径了,i和j分别是取到明细表和汇总表的最后一行,End属性不明白的可以百度一下。