У меня есть таблица с 2000 строк, структурированная следующим образом:
company product targetJan targetFeb targetMarch targetApril ...
Google Docs 10 20 30 40
Google Mail 13 25 45 70
Что я хочу скрыть
Company product Date Target
Google Docs Jan 10
Google Docs Feb 20
...
Google Mail Jan 13
...
Я понятия не имею, как с этим справиться, и не особо знаком с макросами или vba. Как мне с этим справиться?
EDIT: Я записал макрос, который выполняет эту работу, но только в первой строке, которую я указал. Теперь мне нужно выяснить, как применить его к каждым 12 строкам по всему документу:https://pastebin.com/D9yUHxZk
решение1
Это можно сделать без использования макроса. Формулы ниже заполняют новую таблицу справа от ваших существующих данных:
Эти формулы, заполненные по принципу O2:R2 (соответственно), дают показанные результаты.
=OFFSET($A$2,TRUNC((ROW()-2)/12),0)
=OFFSET($B$2,TRUNC((ROW()-2)/12),0)
=RIGHT(OFFSET($C$1,0,MOD((ROW()-2),12)),3)
=OFFSET($C$2,TRUNC((ROW()-2)/12),MOD((ROW()-2),12))
Обратите внимание, что (для простоты) я изменил ваши целевые заголовки, так что часть месяца представляет собой трехбуквенную аббревиатуру. Если вы хотите извлечь более длинное название месяца, это можно сделать с помощью текстовых функций MID() и LEN().
Когда вы заполните все новые данные, вы можете удалить столбцы, содержащие старые данные, если хотите. Но сначала выберите все новые данные, скопируйте их и выберите Специальная вставка > Значения..., чтобы данные не были потеряны при удалении столбцов, из которых они получены.
решение2
Чтобы преобразовать строки в столбцы (транспонировать):
- скопируйте свой диапазон
- вставить
- нажмите на опцию вставки (в нижнем правом углу вставленного массива)
- нажмите на транспонирование (T)
В противном случае ваш пример транспонирования неясен, но если вы хотите сделать его более индивидуальным, это хорошая возможность немного изучить функции vba/excel. Просто начните с пошагового разделения ожидаемых действий.
удачи.