Microsot Excel - получение значений с листа
У меня есть маленький вопрос, который я не мог понять в 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 ответ
Похоже, вам нужен короткий макрос VBA для достижения этой цели.
Вот как я мог бы решить это алгоритмически, предполагая, что данные уже были импортированы в текущий лист:
1. Скопируйте весь "usedarea" в двумерный массив VBA (одно утверждение)
- начиная со строки 1 (r=1), если ячейка в столбце X пуста, выйти из цикла (распознавая последнюю строку). Вы выбираете столбец X так, чтобы он гарантированно был непустым для непустых строк.
- скопировать значения из массива [r+1,10], [r+4,10] [r+9,10] во второй массив "результатов"
- г = г + 20
- вернуться к шагу 2
При выходе добавьте новый лист и скопируйте массив результатов в него одним оператором.
Если вы не знакомы с копированием областей ячеек в массивы, вы можете напрямую работать со ссылками на ячейки. Суть в том, чтобы использовать цикл DO WHILE, искать окончательную пустую ячейку и получать нужные значения по строке, по ссылке на столбец (например, через OFFSET).