Страницы: 1
RSS
При переходе в следующую строку ссылка должна оставаться на том же месте
 
Здравствуйте! Мне необходимо написать макрос для статистической обработки данных.  При этом ссылки должны быть относительными, так как запускать его придется в разных местах в таблице. Мне потребовалось ввести цикл типа «do until _ loop», для того чтобы (см картинку) вычисление в третьем столбце продолжалось, пока следующая строка в первом столбце не будет пустой. При этом в формуле есть переменная Xi, которая берется из первого столбца и при выполнении тела цикла каждый раз спускается на один, как и должно быть, а есть Xn, которое должно оставаться неизменным, то есть я хочу, чтобы адрес остался относительным, поэтому не могу ввести фиксированный адрес этой ячейки, но если этого не сделать при второй операции в цикле он уже переходит на следующую строку. Я попыталась решить эту проблему заменой в адресе значения -1 как показано в исходном коде на Z и добавить в тело увеличение z по модулю на 1 (см исправленный код). Однако Excel  выдает ошибку 1004 и прекращает выполнение макроса. В чем может быть ошибка? Может это как-то иначе записывается? Впервые пытаюсь программировать, поэтому возможно не понимаю очевидного.
Первоначальный цикл
Код
Sub Цикл3()
'
' Цикл3 Макрос
'
' Сочетание клавиш: Ctrl+с
' Начало с ячейки Xi #1
    ActiveCell.Offset(0, 2).Range("A1").Select
    ActiveCell.FormulaR1C1 = "=(RC[-1]-RC[-2])^2"
    Do While ActiveCell.Offset(1, -2) <> ""
    ActiveCell.Offset(1, 0).Range("A1").Select
    ActiveCell.FormulaR1C1 = "=(R[-1]C[-1]-RC[-2])^2"
    Loop
End Sub
Измененный цикл
Код
Sub Цикл3()
'
' Цикл3 Макрос
'
' Сочетание клавиш: Ctrl+с
' Начало с ячейки Xi #1
Dim z As Integer
z = 0
    ActiveCell.Offset(0, 2).Range("A1").Select
    ActiveCell.FormulaR1C1 = "=(RC[-1]-RC[-2])^2"
    Do While ActiveCell.Offset(1, -2) <> ""
    ActiveCell.Offset(1, 0).Range("A1").Select
    ActiveCell.FormulaR1C1 = "=(R[-1]C[-1]-R[z]C[-2])^2"
    z = z - 1
    Loop
End Sub
 
Наверное, в формуле надо указать абсолютную ссылку на значение под Xn. На картинке не виден номер строки, так что точно сказать не могу.
Возможно, поможет Типы ссылок на ячейки в формулах Excel
 
Абсолютные ссылки не подходят, так как макрос будет применяться в разных местах документа и адрес переменной Xn будет также меняться
 
Как минимум:
Код
ActiveCell.FormulaR1C1 = "=(R[-1]C[-1]-R[" & z & "]C[-2])^2"
а вообще, я думаю правильно говорят - надо ссылки верно настроить в начальной формуле и всех делов.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Может так.
Код
Sub Цикл3()
'
' Цикл3 Макрос
'
' Сочетание клавиш: Ctrl+с
' Начало с ячейки Xi #1
Dim z As Integer
z = 0
    ActiveCell.Offset(0, 2).Range("A1").Select
    ActiveCell.FormulaR1C1 = "=(RC[-1]-RC[-2])^2"
    Do While ActiveCell.Offset(0, -2) <> ""
    ActiveCell.FormulaR1C1 = "=(RC[-2]-R" & IIf(z = 0, "", "[" & z & "]") & "C[-1])^2"
    z = z - 1
    ActiveCell.Offset(1, 0).Range("A1").Select
    Loop
End Sub
 
Дмитрий(The_Prist) Щербаков, МатросНаЗебре, благодарю! Эти варианты сработали
Изменено: Ирина Откупщикова - 09.02.2022 18:00:31
Страницы: 1
Наверх