Macro que extraiga números que están como texto

31/05/2016 - 17:49 por Pol | Informe spam
Hola, a todos, a ver si me pueden echar una mano con la siguiente macro.

Tras convertir una factura en PDF a EXCEL el resultado es que me quedan los datos similares a estos pero con mucho texto y números variados de cifras entre los grupos de códigos que se muestran a continuación, colocados de este modo:

COLUMNA:A B C D E F G
FILA1 Producto1 0,95 18 0,78 21 08410435051001
2 Producto2 1,69 18 1,39 21 08411660170212
3 Producto3 1,99 18 1,63 21 08411660170303
4 Producto4 1,69 18 1,39 21 08411660170234
5 Producto5 1,27 18 1,04 21 08410469200355
6
7 ENTRE GRUPO Y GRUPO HAY UNA SEPARACIÓN CON TEXTO Y NÚMEROS
8
9 Producto6 0,95 18 0,78 21 08410435051006
10 Producto7 1,69 18 1,39 21 08411660170217
11 Producto8 1,99 18 1,63 21 08411660170308
12 Producto9 1,69 18 1,39 21 08411660170239
13 Producto10 1,27 18 1,04 21 08410469200310
14
15 TEXTO... VARIADO
16
17 Producto11 0,95 18 0,78 21 08410435051011
18 Producto12 1,69 18 1,39 21 08411660170212
19 Producto13 1,99 18 1,63 21 08411660170313
20 Producto14 1,69 18 1,39 21 08411660170214
21 Producto15 1,27 18 1,04 21 08410469200315

La intención es que mediante una macro conseguir el modo que me vaya recorriendo la columna "G" que vienen siendo los códigos de los productos, y por cada código que localice (que sea un número de más de 10 cifras) copie toda la fila entera y la traslade a la hoja2 del mismo libro de modo que elimine todo el resto de datos que no sean las filas que contienen los códigos.

Está la complicación de que los números están grabados en excel como texto y por código VBA no consigo que se
conviertan en números.

He probado grabando macros para eliminar todo lo que no sean filas con códigos, pero como las facturas no son
siempre iguales, el resultado no es válido.

La cuestión es que tengo que extraer todas las filas y que me queden de este modo.

EN LA HOJA2

COLUMNA:A B C D E F G
FILA1 Producto1 0,95 18 0,78 21 08410435051001
2 Producto2 1,69 18 1,39 21 08411660170212
3 Producto3 1,99 18 1,63 21 08411660170303
4 Producto4 1,69 18 1,39 21 08411660170234
5 Producto5 1,27 18 1,04 21 08410469200355
9 Producto6 0,95 18 0,78 21 08410435051006
10 Producto7 1,69 18 1,39 21 08411660170217
11 Producto8 1,99 18 1,63 21 08411660170308
12 Producto9 1,69 18 1,39 21 08411660170239
13 Producto10 1,27 18 1,04 21 08410469200310
17 Producto11 0,95 18 0,78 21 08410435051011
18 Producto12 1,69 18 1,39 21 08411660170212
19 Producto13 1,99 18 1,63 21 08411660170313
20 Producto14 1,69 18 1,39 21 08411660170214
21 Producto15 1,27 18 1,04 21 08410469200315

He pensado utilizar el método For-Next, pero no doy con la forma de pedirle al método For que recorra la columna G, y cuando localice un número que tenga más de 10 cifras copie la fila entera y la pase a la hoja 2 situándola al final de cada fila.

Agradecería cualquier ayuda.

Muchas gracias de antemano.
 

Leer las respuestas

#1 Emilio
31/05/2016 - 19:41 | Informe spam
-
¡Importante!: Colabora con el grupo.Contesta a este mensaje
y dinos si te sirvió o no la respuesta dada. Muchas gracias
-
Hola!
para convertir esos números en número (valga la redundancia), solo tienes
que seleccionarlos y hacer, ya sea en un procedimiento o simplemente en la
ventana inmediato:
Selection.value=Selection.value

Otro método puede ser sumarles un cero mediante pegado especial > Sumar.

Saludos a todos desde Huelva

Emilio [MS-MVP Access 2006/11]
http://www.mvp-access.com/foro
http://www.mvp-access.es/emilio
"Pol" escribió en el mensaje de
noticias:

Hola, a todos, a ver si me pueden echar una mano con la siguiente macro.

Tras convertir una factura en PDF a EXCEL el resultado es que me quedan los
datos similares a estos pero con mucho texto y números variados de cifras
entre los grupos de códigos que se muestran a continuación, colocados de
este modo:

COLUMNA:A B C D E F G
FILA1 Producto1 0,95 18 0,78 21 08410435051001
2 Producto2 1,69 18 1,39 21 08411660170212
3 Producto3 1,99 18 1,63 21 08411660170303
4 Producto4 1,69 18 1,39 21 08411660170234
5 Producto5 1,27 18 1,04 21 08410469200355
6
7 ENTRE GRUPO Y GRUPO HAY UNA SEPARACIÓN CON TEXTO Y NÚMEROS
8
9 Producto6 0,95 18 0,78 21 08410435051006
10 Producto7 1,69 18 1,39 21 08411660170217
11 Producto8 1,99 18 1,63 21 08411660170308
12 Producto9 1,69 18 1,39 21 08411660170239
13 Producto10 1,27 18 1,04 21 08410469200310
14
15 TEXTO... VARIADO
16
17 Producto11 0,95 18 0,78 21 08410435051011
18 Producto12 1,69 18 1,39 21 08411660170212
19 Producto13 1,99 18 1,63 21 08411660170313
20 Producto14 1,69 18 1,39 21 08411660170214
21 Producto15 1,27 18 1,04 21 08410469200315

La intención es que mediante una macro conseguir el modo que me vaya
recorriendo la columna "G" que vienen siendo los códigos de los productos, y
por cada código que localice (que sea un número de más de 10 cifras) copie
toda la fila entera y la traslade a la hoja2 del mismo libro de modo que
elimine todo el resto de datos que no sean las filas que contienen los
códigos.

Está la complicación de que los números están grabados en excel como texto y
por código VBA no consigo que se
conviertan en números.

He probado grabando macros para eliminar todo lo que no sean filas con
códigos, pero como las facturas no son
siempre iguales, el resultado no es válido.

La cuestión es que tengo que extraer todas las filas y que me queden de este
modo.

EN LA HOJA2

COLUMNA:A B C D E F G
FILA1 Producto1 0,95 18 0,78 21 08410435051001
2 Producto2 1,69 18 1,39 21 08411660170212
3 Producto3 1,99 18 1,63 21 08411660170303
4 Producto4 1,69 18 1,39 21 08411660170234
5 Producto5 1,27 18 1,04 21 08410469200355
9 Producto6 0,95 18 0,78 21 08410435051006
10 Producto7 1,69 18 1,39 21 08411660170217
11 Producto8 1,99 18 1,63 21 08411660170308
12 Producto9 1,69 18 1,39 21 08411660170239
13 Producto10 1,27 18 1,04 21 08410469200310
17 Producto11 0,95 18 0,78 21 08410435051011
18 Producto12 1,69 18 1,39 21 08411660170212
19 Producto13 1,99 18 1,63 21 08411660170313
20 Producto14 1,69 18 1,39 21 08411660170214
21 Producto15 1,27 18 1,04 21 08410469200315

He pensado utilizar el método For-Next, pero no doy con la forma de pedirle
al método For que recorra la columna G, y cuando localice un número que
tenga más de 10 cifras copie la fila entera y la pase a la hoja 2 situándola
al final de cada fila.

Agradecería cualquier ayuda.

Muchas gracias de antemano.

Preguntas similares