Я дошел до того, что в моем коде хорошо задаваемые вопросы Google просто больше мне не помогают. У меня есть два цикла For в моем коде. Они выполняются правильно для первого рабочего листа, который я установил в цикле в моей рабочей книге. Однако переход к следующему рабочему листу приводит к ошибке времени выполнения:
- ошибка времени выполнения 13, если я использую Application.Average
- ошибка времени выполнения 1004, если я использую Application.WorksheetFunction.Average
Что я пытаюсь сделать:
У меня есть данные из измерений. Они организованы в разных рабочих листах для разных температурных диапазонов. Я хочу пройтись по соответствующим столбцам в соответствующих таблицах в моих данных, чтобы найти средние значения этих столбцов. В конце я хотел бы сохранить средние значения в моем первом рабочем листе для соответствующих заголовков. (Я еще не написал код для этой последней части.)
Любая помощь очень ценится.
Option Explicit
Sub TestAv()
Dim ColCount As Long
Dim ws As Worksheet
Dim LastRow As Long
Dim j, k, ColCount2, wsCount As Long
Dim rngAv As Range
Dim rngAverage As Double
Dim Lr As Long
Dim newBook As Workbook
Dim firstSheet As Worksheet
Set newBook = ActiveWorkbook
Set firstSheet = newBook.Sheets(1)
Application.ScreenUpdating = False
' making firstSheet representable
ColCount = newBook.Worksheets(2).Columns.Count ' all TCs should have been measured for the first temperature
newBook.Worksheets(2).Activate
Range(Cells(1, 2), Cells(1, ColCount)).Copy
firstSheet.Activate
firstSheet.Range("B1").Select
firstSheet.Paste
Application.CutCopyMode = False
Application.CutCopyMode = True
firstSheet.Range("A1").Value = "Temperaturen"
firstSheet.Name = "Mittelwerte"
' calculating mean values in columns of Worksheets
wsCount = newBook.Worksheets.Count
For j = 2 To wsCount
LastRow = firstSheet.Range("A" & Rows.Count).End(xlUp).Row + 1
Set ws = newBook.Worksheets(j)
firstSheet.Range("A" & LastRow).Value = ws.Name
ColCount2 = ws.Columns.Count
ws.Activate
Lr = ws.Range("A" & Rows.Count).End(xlUp).Row - 1
For k = 2 To ColCount2
Set rngAv = ws.Range(ws.Cells(2, k), ws.Cells(Lr, k))
rngAverage = Application.Average(rngAv)
Cells(Lr + 2, k).Value = rngAverage
Next k
Set rngAv = Nothing
Set ws = Nothing
Next j
Application.ScreenUpdating = True
' Mean Values of TCs for different Temperatures in firstSheet
End Sub