excel 在单个工作表中处理不同工作表中的数据

lx0bsm1f  于 2023-02-05  发布在  其他
关注(0)|答案(1)|浏览(143)

我有一个Excel文件,其中包含名为1、2、3等的工作表。这些工作表包含我希望在相同区域中分析的数据。我希望在单个工作表(我们称之为主工作表)中分析这些数据。
例如,对于主工作表的B2单元格,我希望取工作表1的范围B2:B11的平均值。对于C2单元格,我希望取工作表1的范围C2:C11的最小值,依此类推。
同样,对于主工作表的B3单元格,我希望取工作表2的范围B2:B11的平均值。对于C3单元格,我希望取工作表2的范围C2:C11的最小值,依此类推。
为此,我在Excel中找不到任何快捷方式,所以我想写一个VBA代码就可以了。但是我对它不是很熟悉,所以我有点卡住了。

Sub MasterWorksheet()
Dim i as integer
Dim TotalNumberofWorksheets As Integer
TotalNumberofWorksheets = 99
For i to TotalNumberofWorksheets:
   ActiveWorkbook.Worksheets("Master Worksheet").Cell(2, i+1).Value = ActiveWorkbook.Worksheets(i).Range("B2:B11").Average()
   ActiveWorkbook.Worksheets("Master Worksheet").Cell(2, i+1).Value = ActiveWorkbook.Worksheets(i).Range("C2:C11").Min()
...
End Sub

我试过这个,但是没有用。有什么想法怎么写吗?

ohfgkhjo

ohfgkhjo1#

For循环的正确语法为

For i = 1 To TotalNumberofWorksheets 'you can make it start at i=2 too if need be
'or go backwards from TotalNumber and then use TotalNumberofWorksheets Step = -1
    'your code here
Next i

因此,在结束步骤之后不需要:,而需要i = startValue
我怀疑您的工作簿中是否有99个工作表,因此我将代码更改为

Sub MasterWorksheet()
    Dim i As Integer
    Dim TotalNumberofWorksheets As Integer
    TotalNumberofWorksheets = ActiveWorkbook.Sheets.Count
    For i = 1 To TotalNumberofWorksheets
        If ActiveWorkbook.Worksheets(i).Name <> "Master Worksheet" Then
            ActiveWorkbook.Worksheets("Master Worksheet").cell(2, i + 1).Value = ActiveWorkbook.Worksheets(i).Range("B2:B11").Average()
            ActiveWorkbook.Worksheets("Master Worksheet").cell(2, i + 1).Value = ActiveWorkbook.Worksheets(i).Range("C2:C11").Min()
            'etc
        End If
    Next i
End Sub

这样,您还可以获得不包括主页面的安全性。

相关问题