我有一个包含50个选项卡(每个选项卡都被命名为国家的Excel文件,例如澳大利亚,奥地利等)。我需要创建一个汇总表,其中列出了所有国家的名称,并为每个国家添加了2个值,该值来自该国家的每个对应标签中的2个单元格(如E20,F20)从多个Excel工作表中引用单元格值的宏
以下给出的是摘要选项卡和国家选项卡。我手动将单元格转到摘要选项卡。如何使用公式/宏为50个选项卡执行此操作?
我有一个包含50个选项卡(每个选项卡都被命名为国家的Excel文件,例如澳大利亚,奥地利等)。我需要创建一个汇总表,其中列出了所有国家的名称,并为每个国家添加了2个值,该值来自该国家的每个对应标签中的2个单元格(如E20,F20)从多个Excel工作表中引用单元格值的宏
以下给出的是摘要选项卡和国家选项卡。我手动将单元格转到摘要选项卡。如何使用公式/宏为50个选项卡执行此操作?
正如拉尔夫提到你应该沿着线做一些事情:
public sub example1()
r=2
sheets("Summary").Range("A1") = "SheetName"
sheets("Summary").Range("B1") = "Sales"
sheets("Summary").Range("C1") = "Profit"
For each sh in thisworkbook.sheets
'Sheet Name
sheets("Summary").Range("A" & r) = sh.Name
'Sales
sheets("Summary").Range("B" & r) = sheets(sh.Name).range("A2")
'Profit
sheets("Summary").Range("C" & r) = sheets(sh.Name).range("B2")
'Increment Row number
r=r+1
Next sh
END SUB
非常感谢。这工作 – GaRaGe
或者你可以尝试这样的事情......
Sub CreateSummary()
Dim sws As Worksheet, ws As Worksheet
Application.ScreenUpdating = False
Set sws = Sheets("Summary")
sws.UsedRange.Cells.Clear
With sws.Range("A1:C1")
.Value = Array("Country", "Sales", "Profit")
.Font.Bold = True
.Font.Size = 14
End With
For Each ws In Worksheets
If Not ws Is sws Then
lr = sws.Cells(Rows.Count, 1).End(xlUp).Row + 1
ws.Range("E20:F20").Copy sws.Range("B" & lr)
sws.Range("A" & lr).Value = ws.Name
End If
Next ws
sws.UsedRange.Columns.AutoFit
sws.Range("A1").CurrentRegion.Borders.Color = vbBlack
Application.ScreenUpdating = True
End Sub
你做了什么至今?请输入密码? – shahkalpesh
您可以使用'Indirect'和'Cell(“filename”)'组合的方式获得图表名称和数字。然而,我不会采用这种方式,因为“间接”是一种易失性功能。所以,我会远离那一个(尽可能多)。相反,你应该使用VBA和'ThisWorkbook.Worksheets中的每一个sht'行。但是,这个网站不提供免费编码服务。因此,我建议你先尝试一下,然后回到你自己的第一个VBA编码方向。 – Ralph