Función left en un Rango Variable Macros Excel

Estoy intentando hacer una macro que me permite obtener las primeras 20 letras de una columna en otra.

Esto lo hago simplemente con un izquierda(B2, 20) en excel pero ahora quiero hacerlo en Macros.

  1. Tengo 2 columnas A Y B.
  2. La columna A esta vacía y en la B están todos los datos que quiero extraer.
  3. La cantidad de registros de la columna B son variables. Es decir, hoy son 100 registros pero mañana pueden ser 120 y necesito ejecutar la macro todos los días.
  4. Necesito obtener los 20 primeros registros de cada registro de la columna B y que se muestra en la columna A

EJEMPLO:

COL A: XRZR-23-00001-000005

COL B: XRZR-23-00001-000005-00001

3 Respuestas

Respuesta
2

Para pasar una fórmula a macro la grabadora de macros te ayudará como lo explico en mi canal:

Video Nº 15: Formulas con macro

Tener presente esta regla: entre comillas la parte 'fija' y entre & la parte 'variable! De los argumentos.

Sdos.

Elsa

Desde esta entrada a mi Blog podrás leer en detalle y copiar los ejemplos:

https://elsamatilde.blogspot.com/2018/10/colocar-formulas-mediante-vba.html 

Sdos.

Elsa

Respuesta
1

Recomendaciones:

https://youtu.be/PupmVvM16-8 

https://youtu.be/dy9w9zbkCaw 

Sal u dos

Dante Amor

No me permite poner la macro

Descarga el archivo en este enlace:

Primeros

¡Gracias! 

Es super rápida muchas gracias Dante.

Es una pena que el foro ya no esté funcionando.

No puedes poner código, no puedes poner imágenes. Ya no llegan los avisos ni las notificaciones.

Lo nuevo:

https://youtu.be/QLLXkSgJpsM 

Sal u dos

Dante Amor

Revisa el siguiente vídeo, ahí explico cómo pasar fórmulas a macro

https://youtu.be/H_XckQWkEWw 

Sal u dos

Dante Amor

Respuesta
1

Puedes hacerlo por el evento Change de la hoja.

Clic derecho en la hoja » Ver código y pegas esto.

Cada vez que modifiques cualquier celda de la columna B a excepción de la fila 1 (que probablemente será el encabezado), se copiarán en la columna A de la misma fila los primeros 20 caracteres.

Hola Ricohablador,

No es lo que estoy buscando, en este caso el evento change no es funcionar porque no es un archivo estático, como indique son datos que van variando en función del tiempo y cada día se genera un archivo nuevo del SAP, entre otras cosas más.

Lo que busco es recorrer la columna A hasta el ultimo registro capturando los 20 primeros registros de la columna B.

Algo así:

Dim uf As Long

uf = Range("B2").End(xlDown).Row

For i = 1 To uf
Left...

Muchas gracias por tu apoyo

¿A qué te refieres con capturar los últimos 20 registros de la columna B?

Hola,

Perdón era las 20 primeras letras.

Ya lo resolví, aunque se demora un poco más que cuando lo hago con fórmula.

Dim uf As Long
uf = Range("B2").End(xlDown).Row
For i = 2 To uf
Cells(i, 1).Value = Left(Cells(i, 2).Value, 20)
Next

Claro, es igual que mi respuesta. La diferencia está en que el archivo al estar ya creado (no se teclea a mano) hay que hacer el bucle en lugar de cambiar una celda en cada cambio.

No entendí bien el punto 3.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas