宏以从多个Excel工作表中引用单元格值

时间:2017-04-12 07:34:12

标签: excel vba excel-vba

我有一个包含50个标签的Excel文件(每个标签名为国家/地区。例如澳大利亚,奥地利等)。我需要创建一个摘要表,列出所有国家/地区名称,并为每个国家/地区添加2个值,这些值指的是该国家/地区的每个相应标签中的2个单元格(例如E20,F20)

以下是摘要标签和国家/地区标签的图像。我手动将单元格引用到摘要选项卡。如何使用公式/宏来为50个选项卡执行此操作?

tab summary

2 个答案:

答案 0 :(得分:1)

正如拉尔夫提到的那样,你应该采取以下措施:

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

答案 1 :(得分:0)

或者您可以尝试这样的事情......

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