我有一個包含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