Макрос Excel для средних значений


У меня проблема со скриптом VBA. Я думаю, что решение простое, но я просто не был в состоянии понять это....

Таким образом, у меня есть рабочая книга, которая содержит много рабочих листов. Каждый лист содержит точно такой же формат таблицы (одинаковое количество строк и столбцов). Что я хотел сделать, так это создать новый рабочий лист и в этом рабочем листе иметь средние значения всех этих значений.

Поэтому, например, в ячейке B2 я хочу иметь среднее значение ячеек B2 из всех других листов. Я поэтому создал макрос, который делает это, это не проблема, проблема, однако, в том, что в этом макросе все листы упоминаются по их именам, и поскольку у меня есть много таких книг с разными именами листов, это не будет работать. Поэтому я попытался изменить название первого листа на фактическую ссылку на лист, т. е. лист(1), а последний - на лист(x), где x-количество листов, которое я рассчитал ранее. К сожалению, код не работает, Может кто-нибудь предложить как мне изменить это, чтобы оно работало правильно? Я копирую только проблемную часть кода:

x = Sheets.Count
Sheets.Add After:=Sheets(x)
Range("B2").Select
ActiveCell.FormulaR1C1 = "=AVERAGE(Sheets(1):Sheets(x)!RC)"
1 2

1 ответ:

Попробуйте это. Вы не смещаете свои имена листов (фактически, вы даже не используете имена листов. В контексте Формулы Sheets(1) не имеет смысла. Вам нужно использовать Sheets(1).Name и смещать его соответствующим образом:

"=AVERAGE('" & Sheets(1).Name & ":" & Sheets(x).Name & "'!RC)"