** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Otros de Microsoft: Windows y Office > Excel
  Mensajes nuevos Mensajes nuevos RSS - Cambiar signo negativo en celda
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoCambiar signo negativo en celda

 Responder Responder
Autor
Mensaje
GENARO1908 Ver desplegable
Nuevo
Nuevo


Unido: 27/Agosto/2006
Localización: España
Estado: Sin conexión
Puntos: 10
Enlace directo a este mensaje Tema: Cambiar signo negativo en celda
    Enviado: 19/Diciembre/2009 a las 19:53
Buenas noches,

trabajo con SAP, y cuando tengo que exportar ciertos datos a excel y el signo  es negativo, me sale así:

1454,54-

si es uno no me pasa nada, el problema es que muchas veces suelen ser 1000, o 2000, 0 100000 y están mezclados tanto los positivos como negativos,

columna a             columna b
1454,54-                =+SI(DERECHA(a2;1)="-";-SUSTITUIR(a2;"-";"");a2)
325
2525,33-
1
2
3
231313-


si pongo una columna a lado y le pongo una fórmula me lo cambia, pero lo quiero automitazar con un ctrl+"una letra"...

mi idea es seleccionar esos, 1000 valores y darle al control + "H" por ejemplo y que me los cambie....

alguien se le ocurre como con una macro o en visual basic?

un saludo y muchas gracias
Arriba
Emilio Ver desplegable
Administrador
Administrador

Santander

Unido: 08/Agosto/2004
Localización: España
Estado: Sin conexión
Puntos: 18821
Enlace directo a este mensaje Enviado: 19/Diciembre/2009 a las 20:01
Hola!
 
eso puede ser un simple formato, crea una macro que aplique el que tu quieras y se resolverá.
 
Por ejemplo:
 
Selection.NumberFormat = "0"
Saludos a todos desde Huelva

http://www.mvp-access.es/emilio/
Arriba
GENARO1908 Ver desplegable
Nuevo
Nuevo


Unido: 27/Agosto/2006
Localización: España
Estado: Sin conexión
Puntos: 10
Enlace directo a este mensaje Enviado: 20/Diciembre/2009 a las 22:09
buenas,
 
he encontrado por internet esta solución:
 
Sub sustituir_menos()
Dim Celda As Range

For Each Celda In Selection
If Trim(Right(Celda, 1)) = "-" Then
Celda.Value = Val("-" & Left(Celda, Len(Celda) - 1))
End If
Next

End Sub

y de momento me sirve....
 
saludos
Arriba
Emilio Ver desplegable
Administrador
Administrador

Santander

Unido: 08/Agosto/2004
Localización: España
Estado: Sin conexión
Puntos: 18821
Enlace directo a este mensaje Enviado: 21/Diciembre/2009 a las 19:43
A ver paisano, ¿probaste mi propuesta?, prueba así
 
Selection.NumberFormat = "0.0"
Saludos a todos desde Huelva

http://www.mvp-access.es/emilio/
Arriba
GENARO1908 Ver desplegable
Nuevo
Nuevo


Unido: 27/Agosto/2006
Localización: España
Estado: Sin conexión
Puntos: 10
Enlace directo a este mensaje Enviado: 21/Diciembre/2009 a las 19:56
buenas,
 
aqui media españa bajo cero y acabo de entrar en casa y marcaba el coche 16 grados sobre cero, para que luego digan que en el norte hace malo.... lluvia si pero frio... claro está en la costa...
 
al tema, lo probe al principio, pero no me cambia el signo negativo, inserte una macro con esa frase:
 
Selection.NumberFormat = "0.0"
 
por eso seguí buscando por internet y encontre lo otro:
 
Sub sustituir_menos()
Dim Celda As Range

For Each Celda In Selection
If Trim(Right(Celda, 1)) = "-" Then
Celda.Value = Val("-" & Left(Celda, Len(Celda) - 1))
End If
Next

End Sub
que va de lujo, siempre y cuando no haya decimales....  si hubiera algun comando que sustituyera al len y que cogiera double no long...
 
grax
Arriba
Emilio Ver desplegable
Administrador
Administrador

Santander

Unido: 08/Agosto/2004
Localización: España
Estado: Sin conexión
Puntos: 18821
Enlace directo a este mensaje Enviado: 21/Diciembre/2009 a las 20:04
Vamos a ver, yo lo he probado y funciona perfectamente, ¿Tienes todo el rango seleccionado cuando ejecutas esa macro?
 
Se me ocurre que quizá lo esté tomando como texto y por ello no lo haga bien ¿será eso?
 
Prueba a poner delante
 
Selection.Value=Selection.Value
 
Aunque parezca un absurdo convierte los números almacenados como texto a numeros y ejecutala macro con todo el rango seleccionado.
Saludos a todos desde Huelva

http://www.mvp-access.es/emilio/
Arriba
GENARO1908 Ver desplegable
Nuevo
Nuevo


Unido: 27/Agosto/2006
Localización: España
Estado: Sin conexión
Puntos: 10
Enlace directo a este mensaje Enviado: 21/Diciembre/2009 a las 20:19
debo ser muuuuuuuu torpe,
 
escribo
 
Sub cambiar()
Selection.Value = Selection.Value
Selection.NumberFormat = "0.0"
End Sub
 
pongo en una columna:
 
1554,45
3654,55-
1000-
555
 
selecciono los cuatro valores, ejecuto la macro y lo único que me hace es añadirme algun decimal a los que no llevan signo negativo. y a los que llevan signo negativo nada...  todos estos valores los tengo como número
 
si los pongo como texto, lo que me hace es cambiarme el formato a número.... pero el signo negativo sigue a la derecha...
 
en fin....


Editado por GENARO1908 - 21/Diciembre/2009 a las 20:26
Arriba
Emilio Ver desplegable
Administrador
Administrador

Santander

Unido: 08/Agosto/2004
Localización: España
Estado: Sin conexión
Puntos: 18821
Enlace directo a este mensaje Enviado: 21/Diciembre/2009 a las 20:34
Bueno, busquemos una alternativa, a ver así
 
Sub cambiar()
Dim Celda As Range
For Each Celda In Selection
   If InStr(Celda, "-") Then
      Celda = CDbl(Celda) '* -1
   End If
   Celda.NumberFormat = "0.0"
Next Celda
End Sub
Saludos a todos desde Huelva

http://www.mvp-access.es/emilio/
Arriba
GENARO1908 Ver desplegable
Nuevo
Nuevo


Unido: 27/Agosto/2006
Localización: España
Estado: Sin conexión
Puntos: 10
Enlace directo a este mensaje Enviado: 21/Diciembre/2009 a las 20:55

perfecto, ahora si que funciona como yo lo necesito...

muchisimas graciasssssss x tu trabajo, nos has ahorrado un montón de curro....
 
un saludo y felices fiestas
 
 
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable