Entonces tengo el siguiente requisito:
Hoja 1
xxxx
YYYY
ZZZZ
Hoja 2
1994 xxx
1995 xxx
1996 xxx
1994 YYY
1995 YYY
1996 YYY
1994 ZZZ
1995 ZZZ
1996 ZZZ
Básicamente, lo que quiero es copiar los nombres de las empresas de la hoja 1 y pegarlos en cada año determinado y repetirlos para casi 600 empresas.
¿Existe alguna fórmula o códigos VBA para hacer esto? Realmente apreciaria cualquier ayuda
Respuesta1
Seleccione su lista de empresas y use Datos>Obtener y transformar datos>De tabla/rango.
Esto abrirá el Editor de Power Query. Verás algo como esto:
Utilice Inicio>Cerrar y cargar
Ahora vamos a tomarnos un momento para crear una lista dinámica de años entre un año inicial y un año final. Esto será útil si desea cambiar el inicio y el final más tarde.
Ingrese el año inicial y el año final en celdas separadas en su libro de trabajo.
Seleccione el año de inicio, luego asigne un nombre a la celda escribiendo un nombre como año_inicial en el cuadro Nombre:
Después de haber nombrado la celda, seleccione la celda y use Datos>Obtener y transformar datos>De tabla/rango
Después de que el Editor de Power Query se abra con una sola celda con un encabezado de columna de Columna1, haga clic derecho en esa celda y elija Profundizar:
Si expande el panel Consultas a la izquierda, verá esto:
Utilice Inicio>Cerrar y cargar en y seleccione Sólo crear conexión.
Repita esto para el final del año, para que tenga esto:
Nuevamente, cierre y cargue y solo cree conexión.
Ahora, en Excel, haga clic en Datos>Consultas y conexiones. Deberías ver esto:
El mío dice "50 filas cargadas", porque creé datos ficticios con 50 nombres de empresas. El tuyo puede ser diferente.
Haga clic derecho en la consulta Tabla1 y elija 'Editar'. Esto abrirá nuevamente el Editor de Power Query.
Ahora ve a Inicio>Editor avanzado. Debe tener un aspecto como este:
Vamos a agregar algo de código para crear esa lista de años.
Agregue esta línea a la línea dos:
years = List.Numbers(start_year,end_year),
Como esto:
Ahora haga clic en Listo. Parecerá que nada ha cambiado, pero no te preocupes.
Utilice Agregar columna>Columna personalizada y configúrelo así:
Cuando hagas clic en Aceptar, verás esto:
Haga clic en la flecha doble en la parte superior de la columna del año y haga clic en "Expandir a nuevas filas".
Ahora verás que tienes una fila para cada combinación de Empresa y Año:
Utilice Inicio>Cerrar y cargar para volver a colocar esto en su libro de trabajo.
Si su lista de empresas o el año inicial y/o final cambia, puede simplemente cambiar los datos de origen y actualizar esta consulta.
Respuesta2
Eso es algo muy fácil de hacer. Hay muchas formas, pero la siguiente es la más sencilla y se ajusta a lo que acaba de describir.
Sume cuántos nombres de empresas hay. (Simplemente presione Ctrl-Down Arrow
en la columna de ellos y vea qué fila es la última fila. Use la primera fila con uno de ellos y eso para ver cuántos existen. Digamos que es 587 por el bien de esta respuesta).
En la otra hoja, elija una columna e ingrese el primer año, luego cópielo para completar un total de 587 celdas. Digamos que comienza en A1 y termina en A587. En la celda A588, ingrese la fórmula =A1+1
. Cópielo para llenar otras 587 celdas. Hágalo copiando la celda, luego resaltándola y el resto de las 587 celdas (A588:A1174) y péguela. Ahora tienes las 587 celdas resaltadas y llenas con la fórmula. Copie ese bloque y presione Ctrl-Down Arrow
, luego Down Arrow
nuevamente para llegar a la siguiente celda vacía (A1175).
Ahora pegue nuevamente y baje a la siguiente celda vacía. Continúe hasta que tenga un bloque de celdas 587 de todos los años que desee incluir en la lista. Resalte toda la columna de entradas (tal vez fueron 30 años, por lo que está resaltando las celdas A1:A17610). Copie todo el grupo y Paste|Special|Values
cámbielo todo a texto permanente.
Copie los 587 nombres de empresas y péguelos en la siguiente columna de B1:B587. Luego vaya a la siguiente celda vacía, B588, e ingrese la fórmula =B1
, luego copie la celda. Vaya a la columna A y vaya a la última celda llena, o simplemente use F5 GoTo
para ir a la celda B17610 (la última celda con años es A17610, y de todos modos realmente desea estar en la columna B). Como sea que lo hagas, llega a B17610. Presione Shift-Up Arrow
para cubrir todas esas celdas vacías (en sí y hasta A588, que es donde lo llevará... está bien pegar sobre A588 porque es la misma fórmula).
Una vez resaltado, péguelo. Luego resalte todas las celdas de la columna B como lo hizo con la columna A, luego cópielas y Paste|Special|Values
conviértalas también en texto permanente.
Eso sólo parece una hora y mucha molestia. De hecho, esperaría 2 minutos como máximo, incluso si andas dando vueltas. Y si no lo haces... como quiera que parezca al leerlo, es rápido en la vida real.
Hecho.