Новое в VBA в Excel. Попытка суммировать увеличенную функцию - PullRequest
1 голос
/ 02 мая 2020

Итак, что я пытаюсь сделать, это взять разницу между двумя значениями (x) и (y), чтобы получить (n). Затем я хочу выполнить (x) по формуле (n), увеличивая (x) раз каждый раз. Затем я хочу вывести сумму всех этих результатов в ячейку. Не могу понять, как сделать это аккуратно в одной клетке, как обычно, поэтому я обратился к VBA на этот раз.

Вот что у меня есть:

Sub Math()
'
'Math
'

Dim i As Integer
i = 0
Do While i < ((E42) - (d42))
cell(h42).Value = ((((d42) + i) ^ 2) * 100) / 3


End Sub

Что я ' Я застрял на том, как получить результат каждого l oop и сложить их все вместе. Я ожидаю, что значение i может варьироваться от 1 до 100. Единственный способ, которым я могу думать, что это определенно сработает, - это беспорядок, когда у меня будет большое количество ячеек в отдельном столбце, который будет вычислять каждую из итераций по отдельности, а затем суммировать все их вместе.

В качестве альтернативы, если есть способ написать функцию, которая может вычислить сумму (n) of ((x + n) ^ 2) * 100/3, тогда это было бы намного лучше, но я не могу думать о том, как было бы написано.

1 Ответ

3 голосов
/ 02 мая 2020

Вот как можно создать функцию (которую можно использовать непосредственно в формулах рабочего листа) для формирования суммы:

Function eval_sum(n As Long, x As Double) As Double
    Dim s As Double, i As Long
    For i = 0 To n - 1
        s = s + (x + i) ^ 2 
    Next i
    eval_sum = s * 100 / 3
End Function

Эта функция оценивает:

100/3 * (x^2 + (x+1)^2 + (x+2)^2 + ... + (x+(n-1))^2)

не совсем понятно, если это то, что вы пытались сделать. Если нет, вы можете настроить код под свои нужды.

Небольшое замечание: я использовал Long вместо Integer. Забудьте, что Integer существует. Это действительно наследие со времен ограниченной памяти и 16-битных компьютеров. В современном Excel Integer все равно хранится с 32 битами. Вы просто рискуете переполнением без уважительной причины.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...