通过在多个工作表中添加行和列中的一个范围(例如5×5)中的值并将其转储到一个特定工作表中

我在单个工作簿中有多个工作表,每个工作表中有5行5列的值。 我需要在每个表格中添加相应的单元格值(例如:D5)并将其转储到D5中的新表格中。 我可以做一个特定的单元格,但我很困惑如何在嵌套for循环。 我只做了一天vba ..所以请帮助。 谢谢。

Sub Macro1() Dim i, val 'Select worksheets For i = 7 To Sheets.Count val = val + Sheets(i).Range("e6") Next Sheets("Summation").Range("e6") = val End Sub 

这是你想要的吗?

 Sub Sample() Dim ws As Worksheet, wsSumry As Worksheet Dim startRow As Long, StartCol As Long Dim i As Long, j As Long Dim ar(1 To 4, 1 To 4) As Variant '~~> Start row and start column startRow = 2: StartCol = 2 '~~> Summary sheet Set wsSumry = Sheet1 '~~> Looping through each worksheet For Each ws In ThisWorkbook.Worksheets '~~> Check if it is not the summary sheet If ws.Name <> wsSumry.Name Then '~~> Loop through the row and columns and '~~> Store it in an array For i = startRow To (startRow + 3) For j = StartCol To (StartCol + 3) ar(i - 1, j - 1) = ar(i - 1, j - 1) + ws.Cells(i, j) Next j Next i End If Next '~~> Write array to summary sheet wsSumry.Range("B2").Resize(UBound(ar), UBound(ar)).Value = ar End Sub 

截图 在这里输入图像说明

您可以使用“复制”和“添加”技术,循环遍历不是简单表格的每张表格,然后将其值粘贴到最终表格(添加它们时) – 如下所示:

 Dim b As Worksheet Set b = ThisWorkbook.Worksheets("Sheet4") b.range("A1:A2").clear For Each a In ThisWorkbook.Sheets If Not a.Name = b.Name Then a.Range("A1:A2").Copy b.Range("A1:A2").PasteSpecial operation:=xlAdd End If Next 

显然你的范围可以被定义为代替“A1:A2”

我相信有更多的“代码”方式来添加数组,但在Excel中,这可能对你有好处。