Macro me coge ultimo dato de 3 q le doy
Estoy haciendo una macro que quiero que vaya copiando 3 datos que van en rango, y el problema es que le voy dando los tres pasos y cuando la ejecuto me coge solo el ultimo dato en las 3 columnas, se queda con el ultimo dato. ¿Qué hago mal? Muchas gracias.
1 Respuesta
Respuesta de Elsa Matilde
1
1
Elsa Matilde, https://www.youtube.com/c/ElsaMatilde
Escribime la macro que ya tenés para que la ajuste y trabaje con tus referencias.
Mira, el rango que tengo es este, que está en la hoja 1 de excel:
06 3.367.760 665 E20 28/01/2011 28/01/2011 110081465
lo que quiero es que 3.367.760 se pegue en la columna 1 de la hoja 2
28/01/2011 en la columna 2 de la hoja 2
110081465 en la comlumna 3 de la hoja 3 y luego que se ponga el cursor en la siguiente fila.
Lo que me pasa es que en las 3 columnas el dato que se pega es 110081465.
Esta es la macro:
Sub elena()
'
' elena Macro
' Macro grabada el 28/01/2011 por Gestion
'
' Acceso directo: CTRL+z
'
Range("A4").Select
ActiveCell.FormulaR1C1 = _
" 06 3.367.760 665 E20 28/01/2011 28/01/2011 110081465"
Sheets("Hoja2").Select
ActiveSheet.Paste
Sheets("Hoja1").Select
ActiveCell.FormulaR1C1 = _
" 06 3.367.760 665 E20 28/01/2011 28/01/2011 110081465"
Sheets("Hoja2").Select
Range("B4").Select
ActiveSheet.Paste
Sheets("Hoja1").Select
ActiveCell.FormulaR1C1 = _
" 06 3.367.760 665 E20 28/01/2011 28/01/2011 110081465"
Sheets("Hoja2").Select
Range("C4").Select
ActiveSheet.Paste
Range("A5").Select
End Sub
Gracias.
06 3.367.760 665 E20 28/01/2011 28/01/2011 110081465
lo que quiero es que 3.367.760 se pegue en la columna 1 de la hoja 2
28/01/2011 en la columna 2 de la hoja 2
110081465 en la comlumna 3 de la hoja 3 y luego que se ponga el cursor en la siguiente fila.
Lo que me pasa es que en las 3 columnas el dato que se pega es 110081465.
Esta es la macro:
Sub elena()
'
' elena Macro
' Macro grabada el 28/01/2011 por Gestion
'
' Acceso directo: CTRL+z
'
Range("A4").Select
ActiveCell.FormulaR1C1 = _
" 06 3.367.760 665 E20 28/01/2011 28/01/2011 110081465"
Sheets("Hoja2").Select
ActiveSheet.Paste
Sheets("Hoja1").Select
ActiveCell.FormulaR1C1 = _
" 06 3.367.760 665 E20 28/01/2011 28/01/2011 110081465"
Sheets("Hoja2").Select
Range("B4").Select
ActiveSheet.Paste
Sheets("Hoja1").Select
ActiveCell.FormulaR1C1 = _
" 06 3.367.760 665 E20 28/01/2011 28/01/2011 110081465"
Sheets("Hoja2").Select
Range("C4").Select
ActiveSheet.Paste
Range("A5").Select
End Sub
Gracias.
Si en una sola celda tenés la cadena completa (ActiveCell.FormulaR1C1 = _
" 06 3.367.760 665 E20 28/01/2011 28/01/2011 110081465")
, no se podrá obtener parte de ella salvo que me asegures que cada dato está en la misma ubicación dentro de la cadena.
Es decir: el primer dato está en posición 6, el 2do en 32 (¿o debe tomar la 2da fecha? ) y así con el 3ro.
Confírmame este detalle
" 06 3.367.760 665 E20 28/01/2011 28/01/2011 110081465")
, no se podrá obtener parte de ella salvo que me asegures que cada dato está en la misma ubicación dentro de la cadena.
Es decir: el primer dato está en posición 6, el 2do en 32 (¿o debe tomar la 2da fecha? ) y así con el 3ro.
Confírmame este detalle
A ver, no sé si te he entendido bien lo que me quieres preguntar, el primer dato que tiene que tomar, es el 3.367.760 y lo pondrá en la columna 1, el 2º dato que debe de tomar es la segunda fecha y lo pondría en la columna 2 y en ultimo lugar coge el 110081465 y lo pone en la columna 3.
¿Es eso lo que me preguntas?
¿Es eso lo que me preguntas?
Eso lo tengo claro.
Pero para poder tomar parte de 1 cadena (entiendo que todos los campos se encuentran en la misma celda de origen) se necesita conocer su ubicación.
3.367.760 se encuentra a partir de la posición 6 de la cadena
la 1er fecha a partir de la posición 32 ... y así se puede extraer
Pero esto para 1 fila ... necesitas confirmar si la próxima vez tus datos también tienen esta ubicación y largo.
Si los datos no van a tener esa estructura no va a ser posible extraerlos.
Pero para poder tomar parte de 1 cadena (entiendo que todos los campos se encuentran en la misma celda de origen) se necesita conocer su ubicación.
3.367.760 se encuentra a partir de la posición 6 de la cadena
la 1er fecha a partir de la posición 32 ... y así se puede extraer
Pero esto para 1 fila ... necesitas confirmar si la próxima vez tus datos también tienen esta ubicación y largo.
Si los datos no van a tener esa estructura no va a ser posible extraerlos.
Hola, si, los datos siempre van a estar en esa misma posición, realmente hay más datos, pero basándome en esta cadena ya hago la siguiente.
O por lo menos eso espero.
Gracias.
O por lo menos eso espero.
Gracias.
Bien, esta es la rutina para 1 dato que se encuentra en A4. Si luego necesitas recorrer la col A para pasar otros vamos a agregar un bucle. Confirma por favor.
Te recuerdo que esto solo es posible si todos los campos 'caen' en la misma posición:
Sub elena()
'x Elsamatilde
' Acceso directo: CTRL+z
'
'considero que la celda con toda la cadena está en A4
Range("A4").Select
'ActiveCell.FormulaR1C1 = _
" 06 3.367.760 665 E20 28/01/2011 28/01/2011 110081465"
'guardo cada sección en una variable
cpo1 = Mid(ActiveCell, 8, 9) '2do dato
cpo2 = Mid(ActiveCell, 36, 10) '1er fecha
'cpo3 = mid(activecell, ???????) 'ultimo campo.---------COMPLETAR
'se pasa cada campo a las 3 celdas de la Hoja2
'a partir de la primer fila libre
Sheets("Hoja2").Select
libre = ActiveSheet.Range("A65536").End(xlUp).Row + 1
Range("A" & libre) = cpo1
Range("B" & libre) = cpo2
Range("C" & libre) = cpo3
'vuelvo a la hoja original
Sheets("Hoja1").Select
End Sub
Te recuerdo que esto solo es posible si todos los campos 'caen' en la misma posición:
Sub elena()
'x Elsamatilde
' Acceso directo: CTRL+z
'
'considero que la celda con toda la cadena está en A4
Range("A4").Select
'ActiveCell.FormulaR1C1 = _
" 06 3.367.760 665 E20 28/01/2011 28/01/2011 110081465"
'guardo cada sección en una variable
cpo1 = Mid(ActiveCell, 8, 9) '2do dato
cpo2 = Mid(ActiveCell, 36, 10) '1er fecha
'cpo3 = mid(activecell, ???????) 'ultimo campo.---------COMPLETAR
'se pasa cada campo a las 3 celdas de la Hoja2
'a partir de la primer fila libre
Sheets("Hoja2").Select
libre = ActiveSheet.Range("A65536").End(xlUp).Row + 1
Range("A" & libre) = cpo1
Range("B" & libre) = cpo2
Range("C" & libre) = cpo3
'vuelvo a la hoja original
Sheets("Hoja1").Select
End Sub
¿Cómo te resultó?
Te recuerdo: esta es la rutina para 1 dato que se encuentra en A4.
Si luego necesitas recorrer la col A para pasar otros vamos a agregar un bucle. Confirma por favor.
Esto solo es posible si todos los campos 'caen' en la misma posición
Sdos
Elsa
Te recuerdo: esta es la rutina para 1 dato que se encuentra en A4.
Si luego necesitas recorrer la col A para pasar otros vamos a agregar un bucle. Confirma por favor.
Esto solo es posible si todos los campos 'caen' en la misma posición
Sdos
Elsa
Hola, he estado mirando las pautas y hay una cosa que sigo sin entender muy bien de donde sale, he estado intentándolo averiguar este tiempo desde que me lo pusiste. Mira, igual es una tontería, pero es que no soy capaz de averiguar esta parte:
cpo1 = Mid(ActiveCell, 8, 9) '2do dato
cpo2 = Mid(ActiveCell, 36, 10) '1er fecha
'cpo3 = mid(activecell, ???????) 'ultimo campo.---------COMPLETAR
es decir, como sacas que el 2ºdato está en el campo 8, 9 y la fecha 36, 10 y claro yo tendría q poner el tercer campo y no soy capaz.
Luego por otro lado tengo que recorrer la columna A como tú me dices por que tengo datos en A15 A17 Y A45, pero claro, estoy pensando que realmente donde encuentro el problema es otra vez en el punto de arriba, ya que le tengo que decir que se encuentra en un rango determinado, ¿sabes?, es decir de la fila A15 hay palabras o datos que no necesito pasar.
cpo1 = Mid(ActiveCell, 8, 9) '2do dato
cpo2 = Mid(ActiveCell, 36, 10) '1er fecha
'cpo3 = mid(activecell, ???????) 'ultimo campo.---------COMPLETAR
es decir, como sacas que el 2ºdato está en el campo 8, 9 y la fecha 36, 10 y claro yo tendría q poner el tercer campo y no soy capaz.
Luego por otro lado tengo que recorrer la columna A como tú me dices por que tengo datos en A15 A17 Y A45, pero claro, estoy pensando que realmente donde encuentro el problema es otra vez en el punto de arriba, ya que le tengo que decir que se encuentra en un rango determinado, ¿sabes?, es decir de la fila A15 hay palabras o datos que no necesito pasar.
Si observamos la cadena:
ActiveCell.FormulaR1C1 = _
" 06 3.367.760 665 E20 28/01/2011 28/01/2011 110081465"
Y tal como mencionas en la consulta:
Lo que quiero es que 3.367.760 se pegue en la columna 1
Cuento la ubicación del primer carácter a pasar y cae en la posición 6 y es un dato de 9 dígitos (quizás he contado mal en el ejemplo)
Con respecto a aislar solo algunas celdas, debieras confirmar exactamente cómo harás el proceso. Puede ser 1 celda por vez, es decir seleccionás 1 celda y ejecutás la macro o seleccionadas las 3 y se indica que es por cada celda de la selección.
Confírmame este detalle para que te ajuste la rutina.
Sin macros, también tenés otra herramienta del menú Datos, Texto en columnas.
Optá por 'De ancho fijo', en el paso siguiente movés los separadores de col delante de cada dato que quieras obtener, fijás una celda de destino y luego sabrás en qué col cae cada datos que necesitas.
Sdos. Quedo a la espera de tus comentarios
Elsa
ActiveCell.FormulaR1C1 = _
" 06 3.367.760 665 E20 28/01/2011 28/01/2011 110081465"
Y tal como mencionas en la consulta:
Lo que quiero es que 3.367.760 se pegue en la columna 1
Cuento la ubicación del primer carácter a pasar y cae en la posición 6 y es un dato de 9 dígitos (quizás he contado mal en el ejemplo)
Con respecto a aislar solo algunas celdas, debieras confirmar exactamente cómo harás el proceso. Puede ser 1 celda por vez, es decir seleccionás 1 celda y ejecutás la macro o seleccionadas las 3 y se indica que es por cada celda de la selección.
Confírmame este detalle para que te ajuste la rutina.
Sin macros, también tenés otra herramienta del menú Datos, Texto en columnas.
Optá por 'De ancho fijo', en el paso siguiente movés los separadores de col delante de cada dato que quieras obtener, fijás una celda de destino y luego sabrás en qué col cae cada datos que necesitas.
Sdos. Quedo a la espera de tus comentarios
Elsa
Hola, voy a probar lo del menu Datos, ya le he pillado el truquillo al 9, claro... 9 dígitos, ¿pero en lugar de 6 no sería 4? Lo que tengo que contar es:
El 0-----1 posición
el6------2 posiciones...
¿No? Sería así lo que me indicas, ¿no?
A ver voy a probar lo que me dices del menu y te cuento
Gracias.
El 0-----1 posición
el6------2 posiciones...
¿No? Sería así lo que me indicas, ¿no?
A ver voy a probar lo que me dices del menu y te cuento
Gracias.
- Compartir respuesta
- Anónimo
ahora mismo