В таблице есть некий массив со случайными значениями. (B1:K1) Значения, естественно, обновляются при пересчете. Нужно выполнить определенное количество пересчетов листа, например 10, и вывести среднее значение каждой ячейки в ячейку ниже. Вручную это делалось бы так: Клавиша F9, сохранить результаты ячеек B1:K1 в диапазон B2:K2, еще раз клавиша F9, сохранить результаты ячеек B1:K1 в диапазон B3:K3 и так 10 раз. Затем, подсчитать среднее значение диапазонов B1:B10, C1:C10, D1:D10 и т.д.
Я так понимаю, решается только макросом.
Здравствуйте!
В таблице есть некий массив со случайными значениями. (B1:K1) Значения, естественно, обновляются при пересчете. Нужно выполнить определенное количество пересчетов листа, например 10, и вывести среднее значение каждой ячейки в ячейку ниже. Вручную это делалось бы так: Клавиша F9, сохранить результаты ячеек B1:K1 в диапазон B2:K2, еще раз клавиша F9, сохранить результаты ячеек B1:K1 в диапазон B3:K3 и так 10 раз. Затем, подсчитать среднее значение диапазонов B1:B10, C1:C10, D1:D10 и т.д.
Public Sub www() Dim i& For i = 1 To 10 Cells(i + 1, 2).Resize(, 10).Value = [b1:k1].Value [b1:k1].Calculate Next [b12:k12].Formula = "=AVERAGE(R[-10]C:R[-1]C)" End Sub
[/vba]
[vba]
Code
Public Sub www() Dim i& For i = 1 To 10 Cells(i + 1, 2).Resize(, 10).Value = [b1:k1].Value [b1:k1].Calculate Next [b12:k12].Formula = "=AVERAGE(R[-10]C:R[-1]C)" End Sub
Public Sub www() Dim i&, a(1 To 10, 1 To 10), j&, b(1 To 1, 1 To 10) Randomize Timer For i = 1 To 10 For j = 1 To 10 a(i, j) = Int(Rnd() * 10 + 1) Next j, i For i = 1 To 10 b(1, i) = Application.Average(Application.Index(a, 0, i)) Next [b2:k2].Formula = b End Sub
[/vba]
Можно вообще без Вашей строки с формулами: [vba]
Code
Public Sub www() Dim i&, a(1 To 10, 1 To 10), j&, b(1 To 1, 1 To 10) Randomize Timer For i = 1 To 10 For j = 1 To 10 a(i, j) = Int(Rnd() * 10 + 1) Next j, i For i = 1 To 10 b(1, i) = Application.Average(Application.Index(a, 0, i)) Next [b2:k2].Formula = b End Sub
KuklP, как переделать Ваш последний макрос, чтобы формула вводилась и оставалась на листе (просто это может быть не только случайное число). У меня большая таблица и пересчитываются несколько листов. Вообще идея была делать несколько десятков пересчетов (F9) и сохранения среднего значения для нескольких разных диапазонов. Т.е. как первый макрос, только без промежуточных результатов.
KuklP, как переделать Ваш последний макрос, чтобы формула вводилась и оставалась на листе (просто это может быть не только случайное число). У меня большая таблица и пересчитываются несколько листов. Вообще идея была делать несколько десятков пересчетов (F9) и сохранения среднего значения для нескольких разных диапазонов. Т.е. как первый макрос, только без промежуточных результатов.Sabalt
Никак. Надо писать новый. Но мне это не интересно. И времени нет играть с Вами в кошки-мышки, и не настолько мне скучно. Перечитайте свой первый пост. Хотите - ждите. Может кто скуки ради и наваяет вам чего. А Вы в очередной раз поменяете условия. Без меня.
Quote (Sabalt)
KuklP, как переделать Ваш последний макрос
Никак. Надо писать новый. Но мне это не интересно. И времени нет играть с Вами в кошки-мышки, и не настолько мне скучно. Перечитайте свой первый пост. Хотите - ждите. Может кто скуки ради и наваяет вам чего. А Вы в очередной раз поменяете условия. Без меня.KuklP
Ну с НДС и мы чего-то стoим! kuklp60@gmail.com WM Z206653985942, R334086032478, U238399322728