На мой взгляд, ответы на этот вопрос слишком конкретны. Вот попытка дать более общий ответ с двумя разными подходами и полным примером.
OFFSET
подход
OFFSET
принимает 3 обязательных аргумента. Первая - это заданная ячейка, от которой мы хотим сместить. Следующие два - это количество строк и столбцов, которые мы хотим сместить (вниз и вправо). OFFNET
возвращает содержимое ячейки, к которой это приводит. Например, OFFSET(A1, 1, 2)
возвращает содержимое ячейки C2
, потому что A1
это ячейка (1,1)
, и если мы добавим (1,2)
к этому, мы получим (2,3)
что соответствует ячейке C2
.
Чтобы заставить эту функцию возвращать каждую n-ю строку из другого столбца, мы можем использовать функцию ROW
. Когда этой функции не передается аргумент, она возвращает номер строки текущей ячейки. Таким образом, мы можем объединить OFFSET
и ROW
, чтобы создать функцию, которая возвращает каждую n-ю ячейку, добавляя множитель к значению, возвращаемому ROW
. Например OFFSET(A$1,ROW()*3,0)
. Обратите внимание на использование $1
в целевой ячейке. Если это не используется, смещение будет смещаться от разных ячеек, таким образом, фактически добавляя 1
к множителю.
ADDRESS
+ INDIRECT
подход
ADDRESS
принимает два целочисленных ввода и возвращает адрес / имя ячейки в виде строки. Например, ADDRESS(1,1)
return "$A$1"
. INDIRECT
берет адрес ячейки и возвращает содержимое. Например, INDIRECT("A1")
возвращает содержимое ячейки A1
(она также принимает ввод с $
в нем). Если мы используем ROW
внутри ADDRESS
с множителем, мы можем получить адрес каждой n-й ячейки. Например, ADDRESS(ROW(), 1)
в строке 1 вернет "$A$1"
, в строке 2 вернет "$A$2"
и так далее. Итак, если мы поместим это в INDIRECT
, мы можем получить содержимое каждой n-й ячейки. Например, INDIRECT(ADDRESS(1*ROW()*3,1))
возвращает содержимое каждой третьей ячейки в первом столбце при перетаскивании вниз.
Пример
Рассмотрим следующий скриншот таблицы. Заголовки (первая строка) содержит вызов, используемый в строках ниже.
Столбец A
содержит данные нашего примера. В данном случае это просто положительные целые числа (подсчет продолжается за пределами показанной области). Это значения, которые мы хотим получить каждый третий, то есть мы хотим получить 1, 4, 7, 10 и т. Д.
Столбец B
содержит неверную попытку использования подхода OFFSET
, но там, где мы забыли использовать $
. Как видно, хотя мы умножаем на 3
, мы на самом деле получаем каждую четвертую строку.
Столбец C
содержит неверную попытку использования подхода OFFSET
, когда мы помнили использовать $
, но забыли вычесть. Поэтому, пока мы получаем каждое третье значение, мы пропустили некоторые значения (1 и 4).
Столбец D
содержит правильную функцию с использованием подхода OFFSET
.
Столбец E
содержит неверную попытку использования подхода ADDRESS
+ INDRECT
, но там, где мы забыли вычесть. Таким образом, мы пропустили несколько строк изначально. Та же проблема, что и с колонкой C
.
Столбец F
содержит правильную функцию с использованием подхода ADDRESS
+ INDRECT
.