Texto a valor numerico

29/07/2007 - 04:19 por Gerardo Roda | Informe spam
Hola a todos, tengo una pregunta que tratare de hacerla lo mas simple
posible.
Tengo una planilla excel importada de un Txt, producto de un Ocr.
Resulta que en la columna donde se supone que voy a tener valores numericos
tengo un texoto tipo
" 12.456,87" sin las comillas. Resulta que tiene espacios al principio,
tiene punto en el medio (y es mi separador de decimales) y tambien un coma.
Mi pregunta es: Cual es la manera mas sencilla de convertir ese texto a
numero 12456.87 ?
Un apunte, son tipo mil celdas a convertir.-

Gracias

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
29/07/2007 - 06:19 | Informe spam
hola, Gerardo !

Tengo una planilla excel importada de un Txt, producto de un Ocr.
Resulta que en la columna donde se supone que voy a tener valores numericos tengo un texoto tipo " 12.456,87" sin las comillas.
Resulta que tiene espacios al principio, tiene punto en el medio (y es mi separador de decimales) y tambien un coma.
Mi pregunta es: Cual es la manera mas sencilla de convertir ese texto a numero 12456.87 ?
Un apunte, son tipo mil celdas a convertir.-



el siguiente ejemplo *supone* que inicias en la celda 'C2' y requieres que se amplie hasta la ultima celda *ocupada* de la columna 'C'
inserta una columna a la derecha para hacer la *conversion* [provisionalmente... luego la elimina]
y re/convierte los valores originales de la columna 'C' [tomando como base el resultado de la columna *auxiliar*

Sub Texto_a_numero()
With Range([c2], [c65536].End(xlUp))
.Cells(1).Offset(, 1).EntireColumn.Insert
.Offset(, 1).FormulaArray = _
"=trim(substitute(substitute(" & .Address & ",""."",""""),"","","".""))"
.Value = .Offset(, 1).Value
.Cells(1).Offset(, 1).EntireColumn.Delete
End With: ActiveSheet.UsedRange
End Sub

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#2 KL
29/07/2007 - 13:11 | Informe spam
Hola Chicos,

"Héctor Miguel" wrote
Sub Texto_a_numero()
With Range([c2], [c65536].End(xlUp))
.Cells(1).Offset(, 1).EntireColumn.Insert
.Offset(, 1).FormulaArray = _
"=trim(substitute(substitute(" & .Address &
",""."",""""),"","","".""))"
.Value = .Offset(, 1).Value
.Cells(1).Offset(, 1).EntireColumn.Delete
End With: ActiveSheet.UsedRange
End Sub



Yo haria una de dos:

1) Manualmente

- seleccionamos el rango con los datos (una columna a la vez)
- ir al menu Datos>Texto a columnas...
- en la primera pantalla elegir la opcion 'Delimitado' y pulsar el boton
'Siguiente'
- en la segunda pantalla elegir la opcion 'Coma' y 'Tratar los delimitadores
consecutivos como uno' y pulsar el boton 'Siguiente'
- en la tercera pantalla:
a. marcar la 1ra columna (vacia) en la tabla de abajo y elegir la opcion 'No
importar columna'
b. marcar la 2da columna en la tabla de abajo y elegir la opcion 'General'
- pulsar el boton 'Avanzado'
- para el separador de decimales elegir "," y para el separador de miles
elegir "." (lo que tienen los datos originales, no lo que buscas) <<-(esta
opcion parece estar estropeada en mi Excel2007)
- pulsar el boton 'Aceptar'
- pulsar el boton 'Finalizar'

2) Por macro

Sub Test()
Selection.TextToColumns _
Destination:=Selection.Cells(1), _
DataType:=xlDelimited, _
ConsecutiveDelimiter:=True, _
Space:=True, _
FieldInfo:=Array(Array(1, 9), Array(2, 1)), _
DecimalSeparator:=",", _
ThousandsSeparator:="."
End Sub

Saludos,
KL
Respuesta Responder a este mensaje
#3 Xavier Budet Graco
29/07/2007 - 13:49 | Informe spam
Hola Gerardo, si prefieres fórmula antes que VBA (yo no soy nada bueno en VBA) lo puedes solucionar con la siguiente:
=--(EXTRAE(A1;HALLAR(CARACTER(32);A1)+1;LARGO(A1)-HALLAR(CARACTER(32);A1)))

Con una objeción: Funciona si tus separadores numéricos son los mismos del texto importado (en este caso "." para los miles y "," para los decimales). de no ser así la cosa se complica y he de recurrir, previamente, a la función =SUSTITUIR. Además he tomado de tu ejemplo que no hay "espacios" depués de la última cifra.

He supuesto que el primer dato está en A1 y utilizo el ";" como separador.

Saludos,

Xavier

Quitar MAC para contestar. Gracias.

"Gerardo Roda" escribió en el mensaje news:
Hola a todos, tengo una pregunta que tratare de hacerla lo mas simple
posible.
Tengo una planilla excel importada de un Txt, producto de un Ocr.
Resulta que en la columna donde se supone que voy a tener valores numericos
tengo un texoto tipo
" 12.456,87" sin las comillas. Resulta que tiene espacios al principio,
tiene punto en el medio (y es mi separador de decimales) y tambien un coma.
Mi pregunta es: Cual es la manera mas sencilla de convertir ese texto a
numero 12456.87 ?
Un apunte, son tipo mil celdas a convertir.-

Gracias


Respuesta Responder a este mensaje
#4 KL
29/07/2007 - 14:41 | Informe spam
Hola Xavier,

"Xavier Budet Graco" wrote
Hola Gerardo, si prefieres fórmula antes que VBA (yo no soy nada bueno en
VBA) lo
puedes solucionar con la siguiente:
=--(EXTRAE(A1;HALLAR(CARACTER(32);A1)+1;LARGO(A1)-HALLAR(CARACTER(32);A1)))

Con una objeción: Funciona si tus separadores numéricos son los mismos del
texto importado
(en este caso "." para los miles y "," para los decimales). de no ser >
así la cosa se complica y
he de recurrir, previamente, a la función =SUSTITUIR. Además he tomado de
tu ejemplo
que no hay "espacios" depués de la última cifra.



(¿?) Y por que no directamente:

=--ESPACIOS(A1)

o bien

=--SUSTITUIR(A1;CARACTER(32);"")

para el supuesto que hemos usado HM y yo:

=--SUSTITUIR(SUSTITUIR(ESPACIOS(A1);".";"");",";".")

o bien

=--SUSTITUIR(SUSTITUIR(SUSTITUIR(A1;CARACTER(32);"");".";"");",";".")

Saludos,
KL
Respuesta Responder a este mensaje
#5 Xavier Budet Graco
29/07/2007 - 16:28 | Informe spam
Hola KL,
=ESPACIOS(A1) a mi no me funciona con este tipo de datos (?)

Si elimino (SUSTITUIR) el caracter (32) sólo me elimina el carácter próximo al primer número pero el resto no porque son caracter (160), de ahí que haya preferido la función EXTRAE.

Por supuesto que seguro que hay mejores posibilidades pero ésta funciona.

Saludos,

Xavier

Quitar MAC para contestar. Gracias.

"KL" escribió en el mensaje news:ejXn%
Hola Xavier,

"Xavier Budet Graco" wrote
Hola Gerardo, si prefieres fórmula antes que VBA (yo no soy nada bueno en
VBA) lo
puedes solucionar con la siguiente:
=--(EXTRAE(A1;HALLAR(CARACTER(32);A1)+1;LARGO(A1)-HALLAR(CARACTER(32);A1)))



Con una objeción: Funciona si tus separadores numéricos son los mismos del
texto importado
(en este caso "." para los miles y "," para los decimales). de no ser >
así la cosa se complica y
he de recurrir, previamente, a la función =SUSTITUIR. Además he tomado de
tu ejemplo
que no hay "espacios" depués de la última cifra.



(¿?) Y por que no directamente:

=--ESPACIOS(A1)

o bien

=--SUSTITUIR(A1;CARACTER(32);"")

para el supuesto que hemos usado HM y yo:

=--SUSTITUIR(SUSTITUIR(ESPACIOS(A1);".";"");",";".")

o bien

=--SUSTITUIR(SUSTITUIR(SUSTITUIR(A1;CARACTER(32);"");".";"");",";".")

Saludos,
KL


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida