2017-04-12 175 views
-1

我有一個包含50個選項卡(每個選項卡都被命名爲國家的Excel文件,例如澳大利亞,奧地利等)。我需要創建一個彙總表,其中列出了所有國家的名稱,併爲每個國家添加了2個值,該值來自該國家的每個對應標籤中的2個單元格(如E20,F20)從多個Excel工作表中引用單元格值的宏

以下給出的是摘要選項卡和國家選項卡。我手動將單元格轉到摘要選項卡。如何使用公式/宏爲50個選項卡執行此操作?

tab summary

+0

你做了什麼至今?請輸入密碼? – shahkalpesh

+1

您可以使用'Indirect'和'Cell(「filename」)'組合的方式獲得圖表名稱和數字。然而,我不會採用這種方式,因爲「間接」是一種易失性功能。所以,我會遠離那一個(儘可能多)。相反,你應該使用VBA和'ThisWorkbook.Worksheets中的每一個sht'行。但是,這個網站不提供免費編碼服務。因此,我建議你先嚐試一下,然後回到你自己的第一個VBA編碼方向。 – Ralph

回答

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 
+0

非常感謝。這工作 – GaRaGe

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 
相關問題