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