Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.04.2010, 13:12   #1
torres
 
Регистрация: 15.04.2010
Сообщений: 6
По умолчанию организовать итерационный процесс

Всем привет!
При написании макроса я столкнулся со следующей проблемой:
Есть 3 ячейки A1 B1 C1
В А1 перебираются числа с 2 до 200000
В В1 дана формула, зависящая от А1(пусть будет В1=А1)
В С1 необходимо проссумировать все значения B1, сначала там занесен 0, т е грубо говоря С1 = С1 + В1
Вот мой код с несколько другими ячейками, но не в этом дело
Код:
Sub 5()

    Range("M20:O20").Select
    Selection.FormulaR1C1 = 0
For I = 2 To 200000 Step 1

    Range("I20").Select
    ActiveCell.FormulaR1C1 = ActiveCell.FormulaR1C1 + 1
    
    Range("M20:O20").Select
    Selection.FormulaR1C1 = "=Sum(RC[-3],RC)"
Next
End Sub
Собственно ошибка в
Код:
Selection.FormulaR1C1 = "=Sum(RC[-3],RC)"
Заранее спасибо!
torres вне форума Ответить с цитированием
Старый 15.04.2010, 13:46   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Подход к решению проблемы изначально неверен.

Во-первых, Selection.FormulaR1C1 = "=Sum(RC[-3],RC)" не сработает
(получается циклическая ссылка, а Excel их не любит)

Во-вторых, какой бы сложной не была формула в ячейке B1,
всё можно вычислить макросом, вообще не обращаясь к листу
(да и макрос отработает за секунду, а не за час, как в случае с вашим макросом)

В-третьих, опишите нормально задачу:
1) что за формула
2) что и зачем надо подсчитать
3) не помешает пример файла.

Макрос получится простой (а, может, даже формулу можно будет придумать такую, что она сама вычислит сумму для всех значений с 2 до 200000), но он будет выглядеть совсем не так, как вы намереваетесь сделать это сейчас.
EducatedFool вне форума Ответить с цитированием
Старый 15.04.2010, 14:04   #3
torres
 
Регистрация: 15.04.2010
Сообщений: 6
По умолчанию

Данная работа является тестом для программы, написанной на другом языке. Есть ряд Сумма k/((k^4-a^4)*tanh(pi*k)).k=1,inf a=0.1 Погрешность 1e-15. Мне известно точное значение. Я определил, что ряд сходится при k=205136. Теперь нужно то же получить через Excel. Я хочу вывести первые 10 значений К, текущего значения ряда при данном K и частичной суммы. Потом пропуск и 205135 и 205136 шаг
torres вне форума Ответить с цитированием
Старый 15.04.2010, 14:07   #4
maksim_serg
Форумчанин
 
Аватар для maksim_serg
 
Регистрация: 25.03.2010
Сообщений: 417
По умолчанию

я так понял значения в ячейки А1 перебираются с помощью макроса?
тогда можно так:

Код:
Private Sub CommandButton2_Click()
Range("C1").Value = ""
For i = 2 To 2000
Range("A1").Value = i
Range("B1").Value = Range("A1").Value + 1' какая-то формула зависящая от ячеки А1
Range("C1").Value = Range("C1").Value + Range("B1").Value
Next i
End Sub
maksim_serg вне форума Ответить с цитированием
Старый 15.04.2010, 19:05   #5
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Возможно этот макрос сможет проверить

Код:

 Sub Rjad()
Dim ssl As Double
Pi = 4 * Math.Atn(1)
Dim sh As Integer, k As Long
a = 0.1
k = 1: sh = 2
  Cells(1, 1) = "K": Cells(1, 2) = "Значение": Cells(1, 3) = "Сумма"
For k = 1 To 10
ss = k / ((k ^ 4 - a ^ 4) * Tan(Pi * k))
 ssl = ssl + ss
 sh = sh + 1
 Cells(sh, 1) = k
  Cells(sh, 2) = ss
   Cells(sh, 3) = ssl
Next

  sh = sh + 1
 k = 205134
  Cells(sh, 2) = k / ((k ^ 4 - a ^ 4) * Tan(Pi * k))
 Cells(sh, 1) = k
   sh = sh + 1
 k = 205135
  Cells(sh, 2) = k / ((k ^ 4 - a ^ 4) * Tan(Pi * k))
 Cells(sh, 1) = k
  sh = sh + 1
 k = 205136
  Cells(sh, 2) = k / ((k ^ 4 - a ^ 4) * Tan(Pi * k))
 Cells(sh, 1) = k
End Sub
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 15.04.2010, 20:21   #6
torres
 
Регистрация: 15.04.2010
Сообщений: 6
По умолчанию

Все сделал, всем огромное спасибо!!!
torres вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите организовать сохранение Yuri_K Microsoft Office Excel 1 02.09.2009 22:25
Организовать матрицу 24nastya11 Общие вопросы C/C++ 3 15.06.2009 13:29
как организовать цикл? Aqil_f Microsoft Office Excel 3 03.06.2009 10:13
Процесс ryton Операционные системы общие вопросы 5 28.05.2008 18:14