MACRO que convierte texto a numero de la HOJA1 a la HOJA2

Experta Elsa Matilde, he visto su respuesta a la pregunta "Macro para convertir texto a números" cuyo resultado es justo lo que quiero pero una variación, que es la siguiente:

1.- ¿Al ejecutar la macro me pregunte en que columna están los datos? Por ejemplo digitare "A5" que es donde esta el inicio de los datos a convertir

2.-¿Me pregunte en que columna quiero el resultado (osea los números convertidos)? Por ejemplo digitare "X1" pero de la HOJA2

Osea los números en texto están en la HOJA1 y el resultado de la MACRO los quiero en una intentar de la HOJA2.

Muchas gracias por su gran ayuda

1 respuesta

Respuesta
1

Encontré 2 de mis respuestas con ese título, ¿me podrías aclarar a cuál te refieres?

¿Será qué tenés valores como texto en A5 y necesitas el resultado numérico en X1 de la hoja2?

Espero tus aclaraciones. No valores aún.

me refiero a esta MACRO

Sub pasandoVal()
'x Elsamatilde
'seleccionar el rango de datos de la hoja o toda la hoja con Cells.Select
Range("A1:Q200").Select
For Each cd In Selection
On Error Resume Next
'si Val devuelve 0 es porque se trata de celdas con texto, no nros guardados como texto
If Val(cd) <> 0 Then
    cd.Value = cd.Value * 1
End If
Next
End Sub

La macro ajustada te devolverá resultados como los que se observan en la imagen col C, pero en hoja aparte:

Sub pasandoVal_otraHoja()
'x Elsamatilde
'hoja destino
Set ho2 = Sheets("Hoja2")
'solicitar inicio del rango de datos de la hoja activa
rgo1 = InputBox("Ingresa la celda de inicio del rango a convertir.", "ORIGEN")
rgo2 = InputBox("Ingresa primer celda destino del rango convertido.", "DESTINO")
If rgo1 = "" Or rgo2 = "" Then
    MsgBox "Error en el ingreso de celdas origen-destino."
    Exit Sub
End If
'se recorre la col a partir de la celda origen hasta encontrar 1 celda vacía
Range(rgo1).Select
While ActiveCell <> ""
    'si Val devuelve 0 es porque se trata de celdas con texto, en ese caso se los pasa sin convertir
    If Val(ActiveCell) <> 0 Then
        ho2.Range(rgo2) = ActiveCell.Value * 1
    Else
        'pasa el dato sin convertir
        ho2.Range(rgo2) = ActiveCell.Value
    End If
    'pasa a la fila siguiente en rango destino
    rgo2 = Range(rgo2).Offset(1, 0). Address(False, False)
    'pasa a fila sgte en rango origen
    ActiveCell.Offset(1, 0).Select
Wend
End Sub

En este caso la macro recorre el rango hasta encontrar la primer celda vacía.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas