![](/img/trans.png)
[英]Copy ranges from multiple worksheets into one worksheet, in first empty cell
[英]Get Average of Multiple Ranges from Multiple Worksheets
我有一個工作簿,該工作簿具有一個訂單表單選項卡,該選項卡可將訂單作為訂單表單的副本生成到新的工作表中。 我需要平均那些工作表中的信息,以便找出典型的順序。
到目前為止,我只是想將所有值加在一起以顯示在趨勢數據工作表中而已提出以下內容:
Sub CalculateAvg()
Dim WS_Count As Integer
Dim I As Integer
Dim wsTrend As Worksheet, wsTemp As Worksheet
Set wsTrend = ThisWorkbook.Sheets("Trend Data")
WS_Count = ActiveWorkbook.Worksheets.Count
For I = 1 To WS_Count
If ActiveWorkbook.Worksheets(I).Name = "Order Form" Then Exit For 'exit loop if order form reached
Set wsTemp = ActiveWorkbook.Worksheets(I)
wsTrend.Range("D4:D53").Value = wsTrend.Range("D4:D53").Value + wsTemp.Range("F4:F53").Value
Next I
End Sub
我收到錯誤13-在range1 = range1 + range2行上鍵入不匹配,我不太了解。
如果我將該行更改為wsTrend.Range("D4:D53").Value = wsTemp.Range("F4:F53").Value
我沒有類型不匹配的問題,並且可以正常工作。
我可能會以錯誤的方式進行操作,或者缺少一些簡單的方法,但是我不確定該朝哪個方向前進。
任何幫助,將不勝感激。 謝謝。
編輯,有一點澄清:基本上,我可以有100個看起來像這樣的工作表,但是數字不同:
apples 2
bananas 5
oranges 3
mangoes 10
我需要遍歷所有工作表並獲取每個項目的平均值並顯示
avg apples 3
avg bananas 4
avg oranges 4
avg mangoes 8
可以嘗試在下面進行修改
通過將值讀入數組進行工作,然后對數組中的值進行平均
Sub avg_test()
Dim Val1(), Val2(), Val3()
Val1 = Sheets("Sheet1").Range("A1:A10").Value
Val2 = Sheets("Sheet2").Range("A1:A10").Value
Val3 = Sheets("Sheet3").Range("A1:A10").Value
avg = Application.WorksheetFunction.Average(Val1, Val2, Val3)
End Sub
好的,所以“ Eh”培根等級使我對問題的看法有所不同。
這就是我得到的:
Sub CalculateAvg()
Dim WS_Count As Integer
Dim I As Integer
Dim App_WS_Count As Integer
App_WS_Count = 0
Dim wsTrend As Worksheet
Dim wsTemp As Worksheet
Set wsTrend = ThisWorkbook.Sheets("Trend Data")
Dim TrendRange As Range
Set TrendRange = wsTrend.Range("D4:D53")
For A = 1 To TrendRange.Rows.Count
TrendRange.Cells(A, 1).Clear
Next A
' Set WS_Count equal to the number of worksheets in the active workbook.
WS_Count = ActiveWorkbook.Worksheets.Count
For I = 1 To WS_Count
If ActiveWorkbook.Worksheets(I).Name = "Order Form" Then Exit For 'exit loop if order form reached
App_WS_Count = App_WS_Count + 1
Set wsTemp = ActiveWorkbook.Worksheets(I)
Dim TempRange As Range
Set TempRange = wsTemp.Range("F4:F53")
For C = 1 To TempRange.Rows.Count
TrendRange.Cells(C, 1).Value = TrendRange.Cells(C, 1).Value + TempRange.Cells(C, 1).Value
Next C
Next I
For A = 1 To TrendRange.Rows.Count
TrendRange.Cells(A, 1).Value = TrendRange.Cells(A, 1).Value / App_WS_Count
Next A
End Sub
從邏輯上講,這可能實際上是低效的。 可能會出現一些煩人的問題,即為新物料添加更多行,然后將其添加到訂單中,但是現在可以正常工作了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.