У меня есть маленький вопрос, который я не мог понять в Excel. Предположим, что на моем листе 1 я буду импортировать текстовые данные, теперь данные могут иметь разные строки, но они всегда будут иметь одинаковые заголовки, повторяющиеся через каждые 20 строк, а также одинаковое количество столбцов. Другими словами, я не знаю, сколько у меня будет наборов по 20, сколько бы я ни хотел скопировать на другой лист только из 10-го столбца 2-го, 5-го и 10-го ряда.

например, если таблица данных имеет 20 строк, меня интересуют только 2-я 5-я и 10-я строки. Если на листе 40, меня интересуют 2-й, 5-й, 10-й и 22-й, 25-й и 30-й. Если 60 -> 2-й 5-й 10-й и 22-й 25-й 30-й и 42-й 45-й 50-й. Следовательно, в зависимости от строк, значения, копируемые из данных, будут больше, поскольку каждые 20 строк описывают одни и те же критерии, но с разными значениями.

Спасибо за вашу помощь и понимание.

С Уважением,

1 ответ1

0

Похоже, вам нужен короткий макрос VBA для достижения этой цели.
Вот как я бы решил это алгоритмически, предполагая, что данные уже были импортированы в текущий лист:
1. Скопируйте весь «usedarea» в двумерный массив VBA (одно утверждение)

  1. начиная со строки 1 (r = 1), если ячейка в столбце X пуста, выйти из цикла (распознавая последнюю строку). Вы выбираете столбец X так, чтобы он гарантированно был непустым для непустых строк.
  2. скопировать значения из массива [r+ 1,10], [r+ 4,10] [r+ 9,10] во второй массив «результатов»
  3. г = г + 20
  4. вернуться к шагу 2
    При выходе добавьте новый лист и скопируйте массив результатов в него одним оператором.

Если вы не знакомы с копированием областей ячеек в массивы, вы можете напрямую работать со ссылками на ячейки. Суть в том, чтобы использовать цикл DO WHILE, искать окончательную пустую ячейку и получать нужные значения по строке, по ссылке на столбец (например, через OFFSET).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .