¿Cuál es la fórmula de Excel o el código VBA correcto para copiar un patrón y pegarlo?

¿Cuál es la fórmula de Excel o el código VBA correcto para copiar un patrón y pegarlo?

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:

ingrese la descripción de la imagen aquí

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.

ingrese la descripción de la imagen aquí

Seleccione el año de inicio, luego asigne un nombre a la celda escribiendo un nombre como año_inicial en el cuadro Nombre:

ingrese la descripción de la imagen aquí

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:

ingrese la descripción de la imagen aquí

Si expande el panel Consultas a la izquierda, verá esto:

ingrese la descripción de la imagen aquí

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:

ingrese la descripción de la imagen aquí

Nuevamente, cierre y cargue y solo cree conexión.

Ahora, en Excel, haga clic en Datos>Consultas y conexiones. Deberías ver esto:

ingrese la descripción de la imagen aquí

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:

ingrese la descripción de la imagen aquí

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:

ingrese la descripción de la imagen aquí

Ahora haga clic en Listo. Parecerá que nada ha cambiado, pero no te preocupes.

Utilice Agregar columna>Columna personalizada y configúrelo así:

ingrese la descripción de la imagen aquí

Cuando hagas clic en Aceptar, verás esto:

ingrese la descripción de la imagen aquí

Haga clic en la flecha doble en la parte superior de la columna del año y haga clic en "Expandir a nuevas filas".

ingrese la descripción de la imagen aquí

Ahora verás que tienes una fila para cada combinación de Empresa y Año:

ingrese la descripción de la imagen aquí

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 Arrowen 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 Arrownuevamente 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|Valuescá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 GoTopara 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 Arrowpara 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|Valuesconvié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.

información relacionada