Tenho uma tabela com 2.000 linhas estruturada assim
company product targetJan targetFeb targetMarch targetApril ...
Google Docs 10 20 30 40
Google Mail 13 25 45 70
Que eu quero me esconder
Company product Date Target
Google Docs Jan 10
Google Docs Feb 20
...
Google Mail Jan 13
...
Não tenho ideia de como resolver isso e não estou particularmente familiarizado com macros ou vba. Como posso resolver isso?
EDIT: gravei uma macro que faz o trabalho, mas apenas na primeira linha que especifiquei. Agora preciso descobrir como aplicá-lo a cada 12 linhas em todo o documento:https://pastebin.com/D9yUHxZk
Responder1
Isso pode ser feito sem usar uma macro. As fórmulas abaixo preenchem uma nova tabela à direita dos dados existentes:
Estas fórmulas, preenchidas a partir de O2:R2 (respectivamente) fornecem os resultados mostrados.
=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))
Observe que (para simplificar) alterei seus cabeçalhos de destino para que a parte do mês seja uma abreviação de três letras. Se você deseja extrair um nome de mês mais longo, isso pode ser feito usando as funções de texto MID() e LEN().
Depois de preencher todos os novos dados, você pode excluir as colunas que contêm os dados antigos, se desejar. Mas primeiro, selecione todos os novos dados, copie-os e cole especial > Valores... para que os dados não sejam perdidos quando você excluir as colunas das quais são derivados.
Responder2
Para converter linhas em colunas (transpor):
- copie seu intervalo
- colar
- clique na opção colar (canto inferior direito do array colado)
- clique em transpor (T)
Caso contrário, seu exemplo de transposição não está claro, mas se você quiser mais personalizado, é uma boa oportunidade para aprender um pouco das funções do VBA/Excel. Basta começar dividindo as ações esperadas passo a passo.
boa sorte.