我有一本工作簿,它是一份每週報告。到本週結束時,它將包含8張工作表,一張每週的一天和一張報告整週價值的8張工作表。 工作表: 星期一,星期二,星期三,星期四,星期五,星期六,星期,星期Excel VBA - 跨工作表的總和值
每個工作表都是完全相同的格式並從模板表複製。
爲了保持簡單起見,我把它燒到了一個單元格B12。
B12在worksheeet 「周」 需要平等的:!!!!!!! =週一B12 +週二B12 +週三B12 +星期四B12 +週五B12 +週六B12 +太陽B12
我將使用VBA將上面的公式插入工作表「Week」的單元格B12中,但是我有幾個問題:
1)並非所有的每日工作表都存在,例如,如果我僅在星期三運行報表「星期一」和「星期二」將存在。如果我在星期六執行報告,則會存在「星期一」,「星期二」,「星期三」,「星期四」和「星期五」。這意味着我不能只將上面的公式插入到「Week」的單元格B12中,因爲我得到了#REF!由於表單不存在而導致錯誤。
我因此需要一些代碼,將加起來的任何7個每日片材的所有B12值,但僅當片材存在。
所以,如果我在週三運行報告它等於: =週一B12 +星期二B12
如果我在星期六運行報告它等於:! =週一B12 +週二B12 +週三!!! B12 + Thur!B12 + Fri!B12
2)我的第二個問題是,這不適用於單元格B12,但也適用於另外約100個單元格,它們並不都在一個範圍內,而有些是合併的單元格等等。所以,雖然我在談論B12試圖簡化這篇文章,但我希望能夠輕鬆地將解決方案應用於許多其他單元,而無需編寫數百條if語句等。
希望這是有道理的。
這是我有這麼遠,但它不工作:
Sub test()
Dim ws As Worksheet
Dim testVar As Double
Dim wsName As String
wsName = ws.Name
For Each ws In ActiveWorkbook.Worksheets
Select Case wsName
Case "Mon", "Tue", "Wed", "Thur", "Fri", "Sat", "Sun"
testVar = testVar + Worksheets(wsName).Range("B12").Value
End Select
Next ws
Worksheets("Week").Range("B12").Value = testVar
End Sub
乾杯
'wsName = ws.Name'不需要之前的循環中。 –
爲什麼不從每天的白紙開始,並將數據粘貼到收到的數據中。那麼你只需要:'= SUM('Mon:Sun'!B12)'作爲你的公式。 – Rory
@斯科特克萊納那樣簡單嗎? :-)謝謝,它現在有效。 – megatron77