Tengo una tabla con 2000 líneas estructuradas así.
company product targetJan targetFeb targetMarch targetApril ...
Google Docs 10 20 30 40
Google Mail 13 25 45 70
que quiero encubrir a
Company product Date Target
Google Docs Jan 10
Google Docs Feb 20
...
Google Mail Jan 13
...
No tengo idea de cómo abordar esto y no estoy particularmente familiarizado con las macros o vba. ¿Cómo puedo abordar esto?
EDITAR: He grabado una macro que hace el trabajo pero solo en la primera línea que especifiqué. Ahora necesito descubrir cómo aplicarlo cada 12 filas en todo el documento:https://pastebin.com/D9yUHxZk
Respuesta1
Esto se puede hacer sin utilizar una macro. Las fórmulas siguientes completan una nueva tabla a la derecha de sus datos existentes:
Estas fórmulas, completadas a partir de O2:R2 (respectivamente) dan los resultados que se muestran.
=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))
Tenga en cuenta que (para simplificar) cambié los encabezados de destino para que la parte del mes sea la abreviatura de tres letras. Si desea extraer un nombre de mes más largo, puede hacerlo utilizando las funciones de texto MID() y LEN().
Cuando haya completado todos los datos nuevos, puede eliminar las columnas que contienen los datos antiguos si lo desea. Pero primero, seleccione todos los datos nuevos, cópielos y Pegado especial > Valores... para que los datos no se pierdan al eliminar las columnas de las que se derivan.
Respuesta2
Para convertir líneas en columnas (transponer):
- copia tu rango
- pegar
- haga clic en la opción pegar (esquina inferior derecha de la matriz pegada)
- haga clic en transponer (T)
De lo contrario, su ejemplo de transposición no está claro, pero si lo desea más personalizado, es una buena oportunidad para aprender un poco sobre las funciones de vba/excel. Simplemente comience dividiendo las acciones esperadas paso a paso.
buena suerte.