Функция смещения Excel VBA

У меня есть файл Excel с информацией в столбце A и столбце B. Поскольку эти столбцы могут меняться в количестве строк, я хотел бы использовать смещение функции, чтобы я мог печатать формулу за один раз как массив, а не зацикливать формула на ячейку (набор данных содержит почти 1 миллион данных).

Мои данные следующие:

Мой код действительно работает так, как я его хочу. Я не могу понять, как печатать код в Range (D1: D5). Результат теперь напечатан в диапазоне (D1: H1). Кто-нибудь знает, как использовать это смещение в инструкции for?

Sub checkOffset() Dim example As Range Dim sht As Worksheet Dim LastRow As Long Set sht = ThisWorkbook.Worksheets("Sheet1") LastRow = sht.Cells(sht.Rows.Count, "A").End(xlUp).Row Set example = Range("A1:A1") For i = 1 To LastRow example.Offset(0, i + 2).Formula = "=SUM(A" & i & ":B" & i & ")" Next i End Sub 

Используя Offset(Row, Column) , вы хотите компенсировать приращение строки ( i -1 ) и 3 столбца справа (от столбца «A» до столбца «D»)

Попробуйте модифицированный код ниже:

 Set example = Range("A1") For i = 1 To LastRow example.Offset(i - 1, 3).Formula = "=SUM(A" & i & ":B" & i & ")" Next i 

Один из способов вывода формулы за один шаг, без цикла, во весь диапазон – использовать обозначение R1C1:

Изменить: код изменен, чтобы правильно квалифицировать ссылки на лист

 Option Explicit Sub checkOffset() Dim example As Range Dim sht As Worksheet Dim LastRow As Long Set sht = ThisWorkbook.Worksheets("Sheet1") With sht LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row Set example = .Range(.Cells(1, 1), .Cells(LastRow, 1)) End With example.Offset(columnoffset:=3).FormulaR1C1 = "=sum(rc[-3],rc[-2])" End Sub 
  1. Для этого вам не нужно использовать VBA. Просто введите = sum (A1: B1) в ячейке D1, а затем заполните его .

  2. Если вы все равно собираетесь использовать VBA, используйте это:

     Sub checkOffset() Dim example As Range Dim sht As Worksheet Dim LastRow As Long Set sht = ThisWorkbook.Worksheets("Sheet1") LastRow = sht.Cells(sht.Rows.Count, "A").End(xlUp).Row Set example = Range("A1:A1") For i = 1 To LastRow example.Offset(i - 1, 3).Formula = "=SUM(A" & i & ":B" & i & ")" Next i End Sub 

Работа offset выполняется со смещением строки, смещением столбца. Вы хотите, чтобы столбец всегда был зафиксирован на 3 справа.

  • Смещение VBA-копии в другую книгу
  • Excel. Определите, выполняется ли несколько критериев.
  • Функция Excel OFFSET в r
  • Использование индекса и совпадения, но изменение столбца при перетаскивании вместо строки
  • Как автоматически выбрать предыдущие данные за месяц / год для использования в менеджере имен в Excel
  • Excel с использованием vlookup с совпадением адреса адреса
  • Как подсчитать количество лет между двумя датами
  • MAX на нескольких массивах смещений
  • Макрос Copy / PasteSpecial Offset медленный при переключении между рабочими листами
  • Excel смещение / совпадение избежать дублирования
  • Формула Excel для пропусков
  • Давайте будем гением компьютера.