Показать полную графическую версию : Задача Excel VBA
Добрый вечер! Помогите, пожалуйста решить задачу VBA и найти сумму.
n
S= Ʃ (Под корнем) xi - 1
i=1
Откуда берутся Xi?
Каково значение n?
Куда сохранять результат?
Xi »
Это переменная
Куда сохранять результат? »
Значение переменных вводятся в таблицу Excel, и это значение расчитывается при нажатии на кнопку которая ссылается на этот "макрос" + нужно, чтоб расчитывалась сумма. Это задача по информатике, больще условий не дается, хочу на примере понять как они решаются
Хорошо, тогда такой вариант, как пример:
1. В ячейках A1:A10 - значения X
2. В ячейках B1:B10 - формула
=корень(А1-1)
=корень(А2-1)
...
=корень(А10-1)
3. В ячейке В11 формула
=СУММ(B1:B10)
но это - без VBA. Макрос - чуть позже.
А вот и макрос
Sub sum_sqr()
i = 1 ' присвоение начальных значений
S = 0
Do While Cells(i, 1) <> "" ' цикл - до тех пор, пока в ячейке не будет пусто
S = S + Sqr(Cells(i, 1).Value - 1) ' последовательное суммирование результатов вычислений
i = i + 1
Loop
Cells(i, 1) = S ' запись в ячейку, следующую за последним элементом массива суммы вычислений
End Sub
okshef, большое спасибо! Буду разбиратся.
okshef, помогите, пожалуйста. Не могу разобраться:
1. Если к примеру у меня будет 2 переменных, как мне ввести 2?
2. Если под корнем будет выражение такого типа: a+b*2.1/(x^2-3) или x-2/(x+3), (к примеру), как мне его ввести?
3.Do While Cells(i, 1) <> "" ' цикл - до тех пор, пока в ячейке не будет пусто »
Для чего это нежно?
1. Введите две переменные, значения которых записаны в столбцах A и B:
x1=Cells(i,1)
x2=Cells(i,2)
2. Как я понимаю a и b - постоянные? Задайте их до начала цикла: A=a: B=b. Можно присваивать значение x до вычисления суммы, добавив выражение
x=Cells(i, 1)
Тогда формула в цикле будет иметь вид S=S+a+b*2.1/(x^2-3)
Соответственно, во втором случае поменяется только формула.
3. Для того, чтобы не быть ограниченным в количестве ячеек с данными. Как только данные закончились - вышли из цикла. Можно, конечно, заменить на явно заданный цикл
For i=1 to N
....
Next
Но это только в том случае, если известно N
okshef, тогда при условии:
n
S= Ʃ (Под корнем) a+b*2.1/(x^2-3)
i=1
Получается так?
Sub sum_sqr()
i = 1 ' присвоение начальных значений
S = 0
a=Cells(i,1)
b=Cells(i,2)
x=Cells(i,3)
Do While Cells(i, 1) <> "" ' цикл - до тех пор, пока в ячейке не будет пусто
S = S + Sqr(Cells(i, 1).Value + Cells(i,2)*2.1/(Cells(i,3)^2-3)) ' последовательное суммирование результатов вычислений
i = i + 1
Loop
Cells(i, 1) = S ' запись в ячейку, следующую за последним элементом массива суммы вычислений
End Sub
Как я понимаю a и b - постоянные? »
Они могут быть и постоянными и переменными.
1. Что делают эти операторы Loop, как я понимаю, это конец цикла? Value и Cells.
2. Как сделать, чтоб значения которые я ввожу были не превязаны к определенной ячейке, а назначались, к примеру буквами a, b, x.
Присвоение значений переменных нужно внести в цикл.
Do While Cells(i, 1) <> ""
a=Cells(i,1).Value
b=Cells(i,2).Value
x=Cells(i,3).Value
S = S + Sqr(a + b*2.1/(x^2-3))
i = i + 1
Loop
Вы уж, пожалуйста, справку сами читайте: Оператор Do...Loop (Visual Basic) (http://msdn.microsoft.com/ru-ru/library/eked04a7.aspx)
Value и Cells. »
Cells - объект, с которым вы работаете - ячейка. Чтобы воспользоваться одним из ее свойств "значение" обычно пишут .Value.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC