想請教各位高手從不同工作表取數值的問題。
Excel小白如我現在要幫同仁們統計工時。如下圖一,A-F這5個人各交了一個檔案給我,我希望把每個工作表的第18列,抓到圖二的統計表內,我用連結儲存格的方式,顯示的公式為 =A!C18,可是如果我想套用這個公式到其他檔案,圖二裡的公式還是會連結到原檔案的(=[路徑&檔名]A!C18):
1.請問甚麼方法可以解決這個問題?
2.或是請問有沒有其他的方法可以從統計表快速抓取其他儲存格的資料?
3.能否不需先把A-F五個檔案合併到同個活頁簿就可以抓取資料?
謝謝
圖一 A-F 各人的工時表
圖二 統計表
我是覺得如果A-F這5個人的資料是不會再異動的話,你不如把18欄的資料(CTRL+C再到圖二要貼的欄位上,點右鍵有一個貼上值圖示有個123那個),直接貼死在圖二表統計就好了!
是這樣嗎?
填入B20公式會自動帶入{s1~s3}的資料表名稱
不合併檔案取得資料可以用INDIRECT()
,
但是20個檔案要同時開啟,
電腦會吃不消。
用VBA是一個辦法,
但是要有一點基礎。
公式外部參照exceljet
VBA外部參照1藍色小舖
VBA外部參照2奇摩問答
*8/23新增
下次貼程式碼,前後加「```」。
Dim i%, sht As Worksheet
'第一張工作表表到最後一張
For Each sht In Sheets
'當這張工作表不是彙總表才新增資料
If sht.Name <> "彙總表" Then
'跳到彙總表A欄下一列
i = i + 1
'彙總表A欄新增工作表的D36資料
Sheets("彙總表").Range("A" & i) = _
sht.Range("D36").Value
End If
Next
Public Sub text()
'測資
'初始化
Dim sht As Worksheet
Dim data As Integer
data = 7 '測試資料
'程式執行
'每張工作表
For Each sht In Sheets
'非彙總表才新增資料
If (sht.Name <> "彙總表") Then
'其它工作表填入資料
sht.Range("C18", "AG18").Value = data
data = data + 1
End If
Next
'備註欄
'測試日:2019/08/23
'版本:office 365
End Sub
不過你的Excel只能有總表和分表(這樣稱呼?),
分表資料全部會彙總到總表。
Public Sub copy()
'初始化
Dim sht As Worksheet
Dim row As Integer
row = 6
'程式執行
'每張工作表
For Each sht In Sheets
'新增非彙總表資料
If sht.Name <> "彙總表" Then
'彙總表新增其它工作表資料
sht.Range("C18", "AG18").copy '複製範圍
Sheets("彙總表").Range("B" & row).Select
ActiveSheet.Paste '貼上
'跳到彙總表下一列
row = row + 1
End If
Next
'備註欄
'測試日:2019/08/23
'版本:office 365
End Sub
感謝~。但不好意思我不太懂上圖INDIRECT和ADDRESS的使用法(有試著搜尋了解,但是慧根有限.... ><)
我的問題是,有很多個相同格式的工作表,如果我想要把每一個工作表中的C18至AG18, 複製到彙整表的B欄至AF欄:
例:
工作表2的C18~AG18 -> 彙整表的 B6~AF6
工作表3的C18~AG18--> 彙整表的 B7~AF7
工作表4的C18~AG18--> 彙整表的 B8~AF8
以此類推
請問這樣能用INDIRECT嗎?
我找了幾個比較類似的VBA,有一個跟我情況比較接近的,是把每個工作表的D36,複製到彙總表
Public Sub demo()
Dim i%, sht As Worksheet
For Each sht In Sheets
If sht.Name <> "彙總表" Then
i = i + 1
Sheets("彙總表").Range("A" & i) = sht.Range("D36").Value
End If
Next
End Sub
我嘗試先在自己檔案貼一格試試看(把D36改為C18),結果就出現錯誤了...請問上面程式能調整成我需要的格式嗎?
不過我很好奇是什麼錯誤?
i%用法第一次看到,
我以為要用interger
。
不過學公式比較好,
畢竟網路上程式有風險。
謝謝你~~
我試了你提供的程式(直接複製在模組,沒有更動)
它出現的錯誤訊息跟我上面嘗試的程式是一樣的耶
'執行階段錯誤'9
陣列索引超出範圍