Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Office (Word, Excel, Outlook и т.д.) (http://forum.oszone.net/forumdisplay.php?f=115)
-   -   Задача Excel VBA (http://forum.oszone.net/showthread.php?t=193517)

JON4 09-12-2010 21:10 1562140

Задача Excel VBA
 
Добрый вечер! Помогите, пожалуйста решить задачу VBA и найти сумму.
Код:

   
    n
S= Ʃ    (Под корнем) xi - 1
    i=1


okshef 09-12-2010 21:14 1562143

Откуда берутся Xi?
Каково значение n?
Куда сохранять результат?

JON4 09-12-2010 23:15 1562213

Цитата:

Цитата okshef
Xi »

Это переменная
Цитата:

Цитата okshef
Куда сохранять результат? »

Значение переменных вводятся в таблицу Excel, и это значение расчитывается при нажатии на кнопку которая ссылается на этот "макрос" + нужно, чтоб расчитывалась сумма. Это задача по информатике, больще условий не дается, хочу на примере понять как они решаются

okshef 09-12-2010 23:35 1562227

Хорошо, тогда такой вариант, как пример:
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


JON4 10-12-2010 19:07 1562806

okshef, большое спасибо! Буду разбиратся.

JON4 12-12-2010 16:55 1564104

okshef, помогите, пожалуйста. Не могу разобраться:
1. Если к примеру у меня будет 2 переменных, как мне ввести 2?
2. Если под корнем будет выражение такого типа: a+b*2.1/(x^2-3) или x-2/(x+3), (к примеру), как мне его ввести?
3.
Цитата:

Цитата okshef
Do While Cells(i, 1) <> "" ' цикл - до тех пор, пока в ячейке не будет пусто »

Для чего это нежно?

okshef 12-12-2010 17:24 1564117

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

JON4 12-12-2010 18:30 1564173

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

Цитата:

Цитата okshef
Как я понимаю a и b - постоянные? »

Они могут быть и постоянными и переменными.
1. Что делают эти операторы Loop, как я понимаю, это конец цикла? Value и Cells.
2. Как сделать, чтоб значения которые я ввожу были не превязаны к определенной ячейке, а назначались, к примеру буквами a, b, x.

okshef 12-12-2010 18:40 1564184

Присвоение значений переменных нужно внести в цикл.
Код:

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)
Цитата:

Цитата JON4
Value и Cells. »

Cells - объект, с которым вы работаете - ячейка. Чтобы воспользоваться одним из ее свойств "значение" обычно пишут .Value.


Время: 07:51.

Время: 07:51.
© OSzone.net 2001-