2014-09-16 3 views
0

Я хотел бы создать формулу между столбцами и остановить ее, когда она дойдет до последнего столбца, который я определил. Вот код:Loop Formula Across Columns

Sub LoopAcrossCols() 
Dim LastCol As Integer 
Worksheets("Sheet1").Activate 
LastCol = Cells(1, Columns.Count).End(xlToLeft).Column 
Column = 3 
Do 
Cells(2, Column).Formula = "=B2+C3" 

Row = Row + 1 

Loop Until LasCol 

End Sub 

Просто чтобы быть ясно, формула будет меняться, так как петля идет от колонки к колонке. Я просто не знаю, как отформатировать "=B2+C3", чтобы добиться этого. Я открыт для любого другого более эффективного процесса циклирования или способа сделать любую часть кода более эффективной. Кроме того, я не уверен, что «Loop Until LasCol» является допустимым концом цикла. Буду признателен за любую оказанную помощь.

С уважением,

ответ

0

Я не уверен, почему вы приращением Row но состояние вашего цикла основаны на колонки. Я сделал некоторые предположения со следующим.

Sub LoopAcrossCols() 
    Dim c As Long, lc As Long 
    With Sheets("Sheet1") 
     lc = .Cells(1, Columns.Count).End(xlToLeft).Column 
     For c = 3 To lc 
      .Cells(2, c).FormulaR1C1 = "=SUM(RC[-1], R[1]C)" 
     Next c 
    End With 
End Sub 

Альтернативный метод заполнения диапазона формулой без петли.

Sub LoopAcrossCols2() 
    Dim lc As Long 
    With Sheets("Sheet1") 
     lc = .Cells(1, Columns.Count).End(xlToLeft).Column 
     .Cells(2, 3).Resize(1, lc - 2).FormulaR1C1 = "=SUM(RC[-1], R[1]C)" 
    End With 
End Sub 
+0

Большое спасибо @ Jeeped, это сработало. Мне было интересно, можете ли вы объяснить «= СУММ (RC [-1], R [1] C)»? Я никогда не использовал нотацию R1C1. Кроме того, для примера, если циклические строки, формула может быть отформатирована следующим образом: «Ячейки (строка, 3) .Formula =« = A »и строка &« * B »и строка». Может ли этот формат (несколько измененный, конечно) использоваться при циклировании по строкам вместо нотации R1C1? – user3242245

+0

@ user3242245 - Стиль R1C1 может упростить создание формулы с реляционными адресами в VBA. RC [-1] означает «любая строка, в которой вы сейчас находитесь × один столбец слева», поэтому, если вы начинаете с C2, вы будете ссылаться на B2. R [1] C - одна строка вниз × любой столбец, на котором вы находитесь, поэтому C3. Вы также можете добавить все формулы сразу, если вы укажете диапазон. Это быстрее, чем цикл. Я отредактировал свой ответ и добавил альтернативный метод. – Jeeped