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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.07.2011, 21:14   #1
chelxxx
Новичок
Джуниор
 
Регистрация: 05.07.2011
Сообщений: 2
По умолчанию =ЛИНЕЙН и Цикл

Доброго времени суток, сколько не пытался не получается решить следующее.

Есть функция =линейн, в ней 4 строки которые мне надо заполнить вот так:
1: F3:F1932 (вот этот элемент должен изменяться при каждом шаге цикла, двигаться в право: F3:F1932, G3:G1932... и т. д.)
2: A1940:K1944 (этот массив всегда один и тот же с ним проблем нет)
3: 1
4: 1

результат в поле формулы выглядит так:
{=ЛИНЕЙН(F3:F1932;A1950:J3879;1;1)}

через запись макроса это выглядит вот так:
Sub Макрос1()

Range("A1940:I1944").Select
ActiveCell.FormulaR1C1 = _
"=LINEST(R[-1937]C[5]:R[-8]C[5],R[10]C:R[1939]C[9],1,1)"
Selection.FormulaArray = _
"=LINEST(R[-1937]C[5]:R[-8]C[5],R[10]C:R[1939]C[9],1,1)"

End Sub



Предварительно надо выбирать поле 11 на 5 чтобы после функции нажать Ctrl+Shift+Enter и из ячейки получится массив 11 на 5. эти массивы надо расположить вдоль строки с отступом в 20 от начала до начала другого. Но не в этом суть. Немогу засунуть цикл в первую строчку =линейн. Очень долго не могу решить, помогите.

Последний раз редактировалось chelxxx; 05.07.2011 в 21:18.
chelxxx вне форума Ответить с цитированием
Старый 05.07.2011, 23:24   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Цитата:
A1940:K1944 (этот массив всегда один и тот же с ним проблем нет)
...
результат в поле формулы выглядит так:
{=ЛИНЕЙН(F3:F1932;A1950:J3879;1;1)}
это немного разные диапазоны, найдите 10 отличий...

пробуйте (не проверял)
Код:
Sub igLine()
  For n = 0 To 9
    Range(Cells(1940, 1 + 20 * n), Cells(1944, 11 + 20 * n)).FormulaArray = _
    "=linest(r3c" & 5 + n & ":r1932c" & 5 + n & ", r1950c1:r3879c10, 1, 1)"
  Next
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 06.07.2011, 00:08   #3
chelxxx
Новичок
Джуниор
 
Регистрация: 05.07.2011
Сообщений: 2
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
это немного разные диапазоны, найдите 10 отличий...

пробуйте (не проверял)
Код:
Sub igLine()
  For n = 0 To 9
    Range(Cells(1940, 1 + 20 * n), Cells(1944, 11 + 20 * n)).FormulaArray = _
    "=linest(r3c" & 5 + n & ":r1932c" & 5 + n & ", r1950c1:r3879c10, 1, 1)"
  Next
End Sub
Спасибо огромное работает, единственное не понял как работает
r3c" & 5 + n & " (делает столбец E). А когда ставишь r3c1" & 5 + n & " попадает столбец O по какому принципу? я понимаю что это не рационально просто интересно) а так еще раз спасибо
chelxxx вне форума Ответить с цитированием
Старый 06.07.2011, 03:05   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Цитата:
r3c1" & 5 + n
получится R3C15 - это ячейка О3
замените 5 на 6 (два раза) - будет Вам счастье!
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете

Последний раз редактировалось IgorGO; 06.07.2011 в 03:08.
IgorGO вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Цикл VladimirVB Visual C++ 1 29.11.2010 23:07
Цикл по времени - Как сделать так чтобы цикл выполнялся к примеру 10 секунд ? Anarki Общие вопросы C/C++ 3 13.11.2009 19:23
Цикл с предусловием. ( цикл while) Цикл с постусловием. (цикл repeat ... until) Mr.User Помощь студентам 9 23.11.2007 01:34