Formato Text a Numero

13/10/2004 - 11:17 por Esteban | Informe spam
Hola,
tengo un problema un poco extraño. Resulta ser que tengo un hoja de calculo
en la que se tienen que insertar unos valores que vienen en el formato
"##,##Std." Ejemplo: 123,45Std. o 34,9Std. Estos valores se copian de la
fuente (Control+C) y luego se pegan (Excel solo los reconoce como text, no
como valores). Los necesito tener en Excel como valores para sumarlos. La
unica alternativa es eliminarles el "Std.". Entonces lo que hago es
Reemplazar "Std." por nada y se elimina y el valor me queda como: 123,45.
Esas operaciones funcionan perfectamente, pero cuando las intento grabar en
un Macro, para hacerlas siempre de forma rapida, pero me da como resultado
texto, lo cual indica que no lo puedo ni sumar ni restar. He probado
multiplicando por 1 (como tambien se puede hacer) y grabar ese procedimiento,
pero tampoco funciona. :(
La pregunta es, como puedo hacer para que esto no me suceda y pueda tener
valores y no texto? o si existe otra forma mas rapida que se pueda tener en
una macro para poder tener lo que quiero?
De verdad que me duele la cabeza con este problema!! Necesito ayuda!!
GRACIAS!
 

Leer las respuestas

#1 David
13/10/2004 - 19:01 | Informe spam
Esteban,

una forma fácil de hacerlo, es utilizar una función para
que en una columna o área vecina te convierta estos
valores a números. Por ejemplo, si tu dato se encuentra
en la celda A1, podrías utilizar la siguiente fórmula:

=VALOR(IZQUIERDA(A1,LARGO(A1)-3))

(Estoy usando la coma como separador de lista, es posible
que en tu PC necesités cambiarlo a punto y coma).

Luego, podés copiar los resultados y ejecutar un pegado
especial de valores en el lugar donde los vas a utilizar.

Si preferís utilizar un macro, probá con el siguiente:

Dim Texto As String
AreaCount = Selection.Areas.Count
If AreaCount < 128 Then
i = 1
For Each A In Selection.Areas
NFi(i) = A.Row
NCo(i) = A.Column
CFi(i) = A.Rows.Count
Cco(i) = A.Columns.Count
i = i + 1
Next A
Nr = i - 1
r = 1
i = 1
j = 1
Do While r <= Nr
Ni = CFi(r)
i = NFi(r)
Nj = Cco(r)
j = NCo(r)

Do While i < NFi(r) + CFi(r)
Do While j < NCo(r) + Cco(r)
Texto = Left(Cells(i, j), Len(Cells(i,
j).Value) - 3)
Cells(i, j) = Val(Texto)
Loop
j = NCo(r)
i = i + 1
Loop
r = r + 1
Loop
Else
MsgBox "No aplica a más de 128 áreas, y usted
seleccionó " & AreaCount & ".", vbDefaultButton1, "David
le recuerda:"
End If
End Sub


Con este macro, sólo tenés que seleccionar el área donde
están los datos que importaste (podés usar CONTROL para
seleccionar varios bloques), y al ejecutarlo te quita las
últimas 3 letras.

Nos contás cómo te funciona. Exitos ;)


Hola,
tengo un problema un poco extraà±o. Resulta ser que


tengo un hoja de calculo
en la que se tienen que insertar unos valores que vienen


en el formato
"##,##Std." Ejemplo: 123,45Std. o 34,9Std. Estos valores


se copian de la
fuente (Control+C) y luego se pegan (Excel solo los


reconoce como text, no
como valores). Los necesito tener en Excel como valores


para sumarlos. La
unica alternativa es eliminarles el "Std.". Entonces lo


que hago es
Reemplazar "Std." por nada y se elimina y el valor me


queda como: 123,45.
Esas operaciones funcionan perfectamente, pero cuando


las intento grabar en
un Macro, para hacerlas siempre de forma rapida, pero me


da como resultado
texto, lo cual indica que no lo puedo ni sumar ni


restar. He probado
multiplicando por 1 (como tambien se puede hacer) y


grabar ese procedimiento,
pero tampoco funciona. :(
La pregunta es, como puedo hacer para que esto no me


suceda y pueda tener
valores y no texto? o si existe otra forma mas rapida


que se pueda tener en
una macro para poder tener lo que quiero?
De verdad que me duele la cabeza con este problema!!


Necesito ayuda!!
GRACIAS!
.

Preguntas similares