Jump to content
Sign in to follow this  
JuanPerez

Formato personalizado

Recommended Posts

Hola,

Necesito encontrar la manera con un formato personalizado de celda (no me sirve con formato condicional), que me ponga decimales sólo si los hay pero que también ponga el separador de miles. Es decir, si tengo 14.526,36 que escriba esto mismo pero que si no tengo decimales 14.526 que no escriba ningún decimal.

He probado con #.###,## pero el problema es que deja la coma decimal aunque no haya ningún número a continuación, escribiendo 14.526,

¿Existe alguna forma de hacer esto? He intentado también combinando [???]#.###; #.###,## pero no sé cómo poner la condición entre paréntesis que signifique que se trata de un número entero.

Muchas gracias por vuestra ayuda!

Share this post


Link to post
Share on other sites

Hola Gerson..

Aquí, bien.. gracias.. ;)

Gerson, con lo que indicas

14.526 se convierte en 14.526,00

y el quiere que aparezca 14.526 sin los ceros y sin el punto, cuando no hayan decimales, por lo menos eso entendí :rolleyes:

o tal vez, estoy aplicando mal lo que indicas.., aunque lo copié y lo pegué..:D

Yo ya lo conseguí, pero con formato condicional (excel 2007) y el indica que no quiere esa ayuda, supongo que con formulas también se puede..

Share this post


Link to post
Share on other sites
Silvia tienes razon, aunque me equivoque, el formato correcto es

#.##0,00
y para otros paises
#,##0.00[/PHP]

Saludos

Gerson, tal vez sea error de usuario (osea mío..).. jaja, pero a mi me sigue saliendo con 0.00 y tu archivo de la macro también.. :(

La que yo encontré es esta, con formato condicional, pero el consultante no desea con formato condicional..

formato condicional2.zip

Share this post


Link to post
Share on other sites

Hay dos macros, todo depende del separador (de miles y decimales que se utiliza), lo que hace la macro es que si encuentra cantidades con decimales le aplica el FP con decimales si no sin decimales

Con tu FC va de maravillas! pero OJO aplicarlo así #,##0 (con el cero al final)

Al amigo le quedan esas dos opciones

Saludos

Share this post


Link to post
Share on other sites

Hola a ambos

Probaré lo del formato que comentáis, aunque creo que ya los he probado, y el problema está en que si hay decimales no hay problema pero si no hay me coloca la coma aunque sin ningún número detrás.

Lo de no gastar formato condicional es porque quiero aplicarlo a más de 4300 celdas repartidas por más de once hojas, que están todas medio programadas y que ya contienen muchas formato condicional. Si no existiera otra opción lo tendría que hacer con condicionales pero no quería liarlo todo más.

Lo de la macro, que me comentáis lo miraré, pero tiene que aplicarse siempre que escriban un número, y tampoco la puedo activar por eventos porque como os digo esta casi todo vinculado entre hojas.

Probaré lo que me comentáis pero como veis estoy bastante limitada, por eso quería recurrir a lo que me parecía más sencillo que es el formato de las celdas.

Muchas gracias por vuestra ayuda

Share this post


Link to post
Share on other sites
Hola a ambos

Probaré lo del formato que comentáis, aunque creo que ya los he probado, y el problema está en que si hay decimales no hay problema pero si no hay me coloca la coma aunque sin ningún número detrás.

Lo de no gastar formato condicional es porque quiero aplicarlo a más de 4300 celdas repartidas por más de once hojas, que están todas medio programadas y que ya contienen muchas formato condicional. Si no existiera otra opción lo tendría que hacer con condicionales pero no quería liarlo todo más.

Lo de la macro, que me comentáis lo miraré, pero tiene que aplicarse siempre que escriban un número, y tampoco la puedo activar por eventos porque como os digo esta casi todo vinculado entre hojas.

Probaré lo que me comentáis pero como veis estoy bastante limitada, por eso quería recurrir a lo que me parecía más sencillo que es el formato de las celdas.

Muchas gracias por vuestra ayuda

Pues tienes todo un lío:D, SUERTE!

Share this post


Link to post
Share on other sites
y para que sirve el cero..¿?

Silvia así lo determina Excel a ciencia cierta no se el porque, deduzco que es para reconocer la parte numérica, pues los formatos personalizados son solo especialmente para números

oki, ya lo corregí, pero con o sin el cero, me sale igual.. .... ¿? entonces no me puedo dar cuenta para que sirve..

Si te fijas bien, una macro trabaja para el formato #.##0,00 y la otra para #,##0.00 el consultante tiene que utilizar la que le corresponde!

Espero no te haya dejado peor mi pésima explicación:D

Saludos

Share this post


Link to post
Share on other sites

Hola [uSER=9328]@Gerson Pineda[/uSER]

Te comento que se puede usar:

Application.DecimalSeparator
Application.ThousandsSeparator[/PHP]

Para que el sistema reconozca cuál es el separador decimal y el separador de miles del consultante. Ya que has hecho la macro (que aún no he visto, pero con los comentarios veo que pones al consultante a definir), es mejor que el mismo sistema lo reconozca! Bendiciones!

Share this post


Link to post
Share on other sites

Que tal [uSER=113842]@johnmpl[/uSER] tienes razón, pero a decir verdad la opción de Silvia es la mas indicada

Siguiendo tu consejo, la macro quedaría así

Sub FormatoPersonalizadoCeros()

vd = Application.DecimalSeparator
vm = Application.ThousandsSeparator

If vd = "." And vm = "," Then
For Each cel In Range("A1", Range("A1").End(xlDown))
vr = cel - VBA.Int(cel)
If vr Then
cel.NumberFormat = "#,##0.00;[red]-#,##0.00"
Else
cel.NumberFormat = "#,##0;[red]-#,##0"
End If
Next
Else
For Each cel In Range("A1", Range("A1").End(xlDown))
vr = cel - VBA.Int(cel)
If vr Then
cel.NumberFormat = "#.##0,00;[red]-#.##0,00"
Else
cel.NumberFormat = "#.##0;[red]-#.##0"
End If
Next
End If

End Sub[/PHP]

Saludos

Share this post


Link to post
Share on other sites

Hola a todos (excusas por no saludar antes)!

Otra opción puede ser, sin bucles:

Sub Formato()
Dim d$, m$
With Application
.ScreenUpdating = 0
d = .DecimalSeparator: m = .ThousandsSeparator
With Range("A1").CurrentRegion.Columns(1)
Range("D2") = "=mod(A2,1)"
.AdvancedFilter 1, Range("D1:D2")
.Offset(1).Resize(.Rows.Count - 1).SpecialCells(12).NumberFormat = "#" & d & "##0" & m & "00;[red]-#" & d & "##0" & m & "00"
Range("D2") = "=mod(A2,1)=0"
.AdvancedFilter 1, Range("D1:D2")
.Offset(1).Resize(.Rows.Count - 1).SpecialCells(12).NumberFormat = "#" & d & "##0;[red]-#" & d & "##0"
ActiveSheet.ShowAllData
Range("D2").Clear
End With
.ScreenUpdating = 1
End With
End Sub[/PHP]

Bendiciones!

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  



×
×
  • Create New...

Important Information

Privacy Policy