Копируйте каждую 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 в строках ниже. Копируйте каждую n-ю строку с одного листа на другой_workbook Столбец 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

2022-06-27T04:44:48+00:00