ordenamiento de numeros que son texto

18/11/2006 - 00:40 por macabeo | Informe spam
Hola, saludos a todos:

Sabe alguien como configurar excel para que ordene una lista de numeros
registrados como textos, y tome en cuenta primero las unidades, luego
las decimas, y asi sucesivamente:
Les expongo mi caso particular: Tengo partidas de un presupuesto en una
columna tales como:

1.2.15.1
1.2.7.5
1.2.3.1

Si las ordeno en orden ascendente quedan:
1.2.15.1
1.2.3.1
1.2.7.5

Pero necesito que se ordenen asi:
1.2.3.1
1.2.7.5
1.2.15.1

lo que hago y que es bastante tedioso cuando se trata de 50 partidas,
es editar los numeros y anteponerles un 0 al 3 y al 7 en el caso del
ejemplo, ordenarlo y luego volverlo a editar y eliminar el cero.
Aprecio se consejo de antemano
fzglz

Preguntas similare

Leer las respuestas

#21 Héctor Miguel
21/11/2006 - 00:41 | Informe spam
hola, Antonio !

... a lo que SI me refiero es que en tu adjunto (y sin tocar nada), en B37 se lee ' #¡VALOR! ' (sin comillas).
Lo que indica que la formula esta intentando procesar un caracter NO numerico...
(Tambien las celdas B29 y B30 conservan uno de los puntos, pero esa es otra historia)...



ya !!! -> el asunto es 'tema' de in/compatibilidades con la configuracion regional ;)
tuve que modificar mi configuracion para invertir los separadores entre decimales y miles [punto <-> punto_y_coma] :))

cuando la configuracion interpreta el punto como separador de miles, es cuando aparecen los 'errores' que mencionas ;)
solucion ?... seguir 'creciendo' la formula para incluir mas 'sustituciones' intermedias del separador de miles [europeo] ;)

la formula que se usa en el sistema americano [el punto como separador decimal] y con 'mi' separador de argumentos...
texto(izquierda(a2,2),"00")
&si(largo(a2)-largo(sustituir(a2,".",""))>0,texto(extrae(a2,hallar(".",a2)+1,2),"00"),"00")
&si(largo(a2)-largo(sustituir(a2,".",""))>1,texto(extrae(a2,hallar(".",sustituir(a2,".","",1))+2,2),"00"),"00")
&si(largo(a2)-largo(sustituir(a2,".",""))>2,texto(izquierda(derecha(a2,2)*10,2),"00"),"00")

la formula para el sistema europeo [el punto es separador de miles] y con 'tu' separador de argumentos...
=texto(izquierda(a2;2);"00")
&si(largo(a2)-largo(sustituir(a2;".";""))>0;texto(sustituir(extrae(a2;hallar(".";a2)+1;2);".";"");"00");"00")
&si(largo(a2)-largo(sustituir(a2;".";""))>1;texto(sustituir(extrae(a2;hallar(".";sustituir(a2;".";"";1))+2;2);".";"");"00");"00")
&si(largo(a2)-largo(sustituir(a2;".";""))>2;texto(izquierda(derecha(sustituir(a2;".";"");2)*10;2);"00");"00")

saludos,
hector.
Respuesta Responder a este mensaje
#22 macabeo
21/11/2006 - 02:20 | Informe spam
Hola a todos:
Gracias por la dedicacion que le dieron al problema, que resulto ser
muy retador...gracias especialmente a Hector Miguel..la formula que
discutiste con Antonio al final , funciona a las mil maravillaseso
era lo que buscaba...Ojala Microsoft pudiera desarrollar una forma de
configurar el ordenamiento o sorting de tal forma que tomara en cuanta
casos como ese y fuera mas sencillo

Saludos
Francisco

Héctor Miguel wrote:
hola, Antonio !

> ... a lo que SI me refiero es que en tu adjunto (y sin tocar nada), en B37 se lee ' #¡VALOR! ' (sin comillas).
> Lo que indica que la formula esta intentando procesar un caracter NO numerico...
> (Tambien las celdas B29 y B30 conservan uno de los puntos, pero esa es otra historia)...

ya !!! -> el asunto es 'tema' de in/compatibilidades con la configuracion regional ;)
tuve que modificar mi configuracion para invertir los separadores entre decimales y miles [punto <-> punto_y_coma] :))

cuando la configuracion interpreta el punto como separador de miles, es cuando aparecen los 'errores' que mencionas ;)
solucion ?... seguir 'creciendo' la formula para incluir mas 'sustituciones' intermedias del separador de miles [europeo] ;)

la formula que se usa en el sistema americano [el punto como separador decimal] y con 'mi' separador de argumentos...
texto(izquierda(a2,2),"00")
&si(largo(a2)-largo(sustituir(a2,".",""))>0,texto(extrae(a2,hallar(".",a2)+1,2),"00"),"00")
&si(largo(a2)-largo(sustituir(a2,".",""))>1,texto(extrae(a2,hallar(".",sustituir(a2,".","",1))+2,2),"00"),"00")
&si(largo(a2)-largo(sustituir(a2,".",""))>2,texto(izquierda(derecha(a2,2)*10,2),"00"),"00")

la formula para el sistema europeo [el punto es separador de miles] y con 'tu' separador de argumentos...
=texto(izquierda(a2;2);"00")
&si(largo(a2)-largo(sustituir(a2;".";""))>0;texto(sustituir(extrae(a2;hallar(".";a2)+1;2);".";"");"00");"00")
&si(largo(a2)-largo(sustituir(a2;".";""))>1;texto(sustituir(extrae(a2;hallar(".";sustituir(a2;".";"";1))+2;2);".";"");"00");"00")
&si(largo(a2)-largo(sustituir(a2;".";""))>2;texto(izquierda(derecha(sustituir(a2;".";"");2)*10;2);"00");"00")

saludos,
hector.
Respuesta Responder a este mensaje
#23 macabeo
21/11/2006 - 18:37 | Informe spam
Algo pasó que no entiendo muy bien... ayer que envie el mensaje de
abajo probe la formula en mi casa, en donde tengo un sistema en ingles
(windows y office). Traduje las funciones a su igual en ingles y
funcionó!!...Hoy aqui en mi oficina donde el sistema es en español me
da un error del tipo #¡VALOR!. Tratando de descubrir que parte de la
formula arrojaba ese error, lo dividi igual como lo presenta Hector, la
secuencia por renglones, la tercera y cuarta formula son las que
generan el error. Encontre que la parte de la formula
Sustituir(a2,".",""). Puse esta formula sola en una celda y me sigue
marcando el mismo error. Siguiendo el instructor de "insertar funcion"
me da valor "", pero al aceptar para que lo escriba en la celda me
regresa de nuevo el error. No se que este haciendo mal...ya que las dos
primeras formulas si funcionan, siendo que la segunda contiene esta
misma funcion...la diferencia esta en el ultimo parametro, el de la
ocurrencia
Sustituyendo A2 por G7, asi es como esta escrita la formula:
=SI(LARGO(G7)-LARGO(SUSTITUIR(G7,".",""))>1,
TEXTO(SUSTITUIR(EXTRAE(G7,HALLAR(".",SUSTITUIR(G7,".","",1))+2,2),".",""),"00"),"00")

Podrian orientarme que es lo que esta mal?

Saludos
Francisco

macabeo ha escrito:

Hola a todos:
Gracias por la dedicacion que le dieron al problema, que resulto ser
muy retador...gracias especialmente a Hector Miguel..la formula que
discutiste con Antonio al final , funciona a las mil maravillaseso
era lo que buscaba...Ojala Microsoft pudiera desarrollar una forma de
configurar el ordenamiento o sorting de tal forma que tomara en cuanta
casos como ese y fuera mas sencillo

Saludos
Francisco

Héctor Miguel wrote:
> hola, Antonio !
>
> > ... a lo que SI me refiero es que en tu adjunto (y sin tocar nada), en B37 se lee ' #¡VALOR! ' (sin comillas).
> > Lo que indica que la formula esta intentando procesar un caracter NO numerico...
> > (Tambien las celdas B29 y B30 conservan uno de los puntos, pero esa es otra historia)...
>
> ya !!! -> el asunto es 'tema' de in/compatibilidades con la configuracion regional ;)
> tuve que modificar mi configuracion para invertir los separadores entre decimales y miles [punto <-> punto_y_coma] :))
>
> cuando la configuracion interpreta el punto como separador de miles, es cuando aparecen los 'errores' que mencionas ;)
> solucion ?... seguir 'creciendo' la formula para incluir mas 'sustituciones' intermedias del separador de miles [europeo] ;)
>
> la formula que se usa en el sistema americano [el punto como separador decimal] y con 'mi' separador de argumentos...
> texto(izquierda(a2,2),"00")
> &si(largo(a2)-largo(sustituir(a2,".",""))>0,texto(extrae(a2,hallar(".",a2)+1,2),"00"),"00")
> &si(largo(a2)-largo(sustituir(a2,".",""))>1,texto(extrae(a2,hallar(".",sustituir(a2,".","",1))+2,2),"00"),"00")
> &si(largo(a2)-largo(sustituir(a2,".",""))>2,texto(izquierda(derecha(a2,2)*10,2),"00"),"00")
>
> la formula para el sistema europeo [el punto es separador de miles] y con 'tu' separador de argumentos...
> =texto(izquierda(a2;2);"00")
> &si(largo(a2)-largo(sustituir(a2;".";""))>0;texto(sustituir(extrae(a2;hallar(".";a2)+1;2);".";"");"00");"00")
> &si(largo(a2)-largo(sustituir(a2;".";""))>1;texto(sustituir(extrae(a2;hallar(".";sustituir(a2;".";"";1))+2;2);".";"");"00");"00")
> &si(largo(a2)-largo(sustituir(a2;".";""))>2;texto(izquierda(derecha(sustituir(a2;".";"");2)*10;2);"00");"00")
>
> saludos,
> hector.
Respuesta Responder a este mensaje
#24 AnSanVal
21/11/2006 - 23:28 | Informe spam
Si te apetece puedes probar con código VBA. Con tantas variables, no me
atrevo con una fórmula pues pues me quedaria muy larga [ no llego al nivel
del amigo Héctor :-( ]

Esta subrutina convierte los textos con puntos de la columna A, en textos
formados por parejas de cifras (dos cifras por grupo, entendiendo como
grupos los separados por puntos) en la columna B. La columna B puede estar
oculta.
Finalmente ordena de menor a mayor, según la columna B, primero por el
primer grupo, luego por el segundo, etc.

Sub MiLista()
Dim celda As Object
Dim n As Integer
Dim pareja As String
Dim texto As String
For Each celda In Range("A:A")
If celda = "" Then
Range("A1:C30").Sort Key1:=Range("B1"), _
Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Exit Sub
End If
texto = ""
For n = 1 To Len(celda.Value)
If Mid(celda, n, 1) = "." Then
If Len(pareja) = 1 Then _
pareja = "0" & pareja
texto = texto & pareja
pareja = ""
Else
pareja = pareja & Mid(celda, n, 1)
End If
Next n
If Len(pareja) = 1 Then pareja = "0" & pareja
texto = texto & pareja
pareja = ""
Cells(celda.Row, 2) = texto
Next celda
End Sub


Saludos desde Tenerife.
***********************************
"macabeo" escribió en el mensaje
news:
Hola, saludos a todos:

Sabe alguien como configurar excel para que ordene una lista de numeros
registrados como textos, y tome en cuenta primero las unidades, luego
las decimas, y asi sucesivamente:
Les expongo mi caso particular: Tengo partidas de un presupuesto en una
columna tales como:

1.2.15.1
1.2.7.5
1.2.3.1

Si las ordeno en orden ascendente quedan:
1.2.15.1
1.2.3.1
1.2.7.5

Pero necesito que se ordenen asi:
1.2.3.1
1.2.7.5
1.2.15.1

lo que hago y que es bastante tedioso cuando se trata de 50 partidas,
es editar los numeros y anteponerles un 0 al 3 y al 7 en el caso del
ejemplo, ordenarlo y luego volverlo a editar y eliminar el cero.
Aprecio se consejo de antemano
fzglz

Respuesta Responder a este mensaje
#25 macabeo
22/11/2006 - 00:03 | Informe spam
Antonio:
Gracias, funcionó bien la rutina VBA que escribiste...

Saludos acá desde Tampico, en el golfo de México.
Francisco

AnSanVal ha escrito:

Si te apetece puedes probar con código VBA. Con tantas variables, no me
atrevo con una fórmula pues pues me quedaria muy larga [ no llego al nivel
del amigo Héctor :-( ]

Esta subrutina convierte los textos con puntos de la columna A, en textos
formados por parejas de cifras (dos cifras por grupo, entendiendo como
grupos los separados por puntos) en la columna B. La columna B puede estar
oculta.
Finalmente ordena de menor a mayor, según la columna B, primero por el
primer grupo, luego por el segundo, etc.

Sub MiLista()
Dim celda As Object
Dim n As Integer
Dim pareja As String
Dim texto As String
For Each celda In Range("A:A")
If celda = "" Then
Range("A1:C30").Sort Key1:=Range("B1"), _
Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Exit Sub
End If
texto = ""
For n = 1 To Len(celda.Value)
If Mid(celda, n, 1) = "." Then
If Len(pareja) = 1 Then _
pareja = "0" & pareja
texto = texto & pareja
pareja = ""
Else
pareja = pareja & Mid(celda, n, 1)
End If
Next n
If Len(pareja) = 1 Then pareja = "0" & pareja
texto = texto & pareja
pareja = ""
Cells(celda.Row, 2) = texto
Next celda
End Sub


Saludos desde Tenerife.
***********************************
"macabeo" escribió en el mensaje
news:
> Hola, saludos a todos:
>
> Sabe alguien como configurar excel para que ordene una lista de numeros
> registrados como textos, y tome en cuenta primero las unidades, luego
> las decimas, y asi sucesivamente:
> Les expongo mi caso particular: Tengo partidas de un presupuesto en una
> columna tales como:
>
> 1.2.15.1
> 1.2.7.5
> 1.2.3.1
>
> Si las ordeno en orden ascendente quedan:
> 1.2.15.1
> 1.2.3.1
> 1.2.7.5
>
> Pero necesito que se ordenen asi:
> 1.2.3.1
> 1.2.7.5
> 1.2.15.1
>
> lo que hago y que es bastante tedioso cuando se trata de 50 partidas,
> es editar los numeros y anteponerles un 0 al 3 y al 7 en el caso del
> ejemplo, ordenarlo y luego volverlo a editar y eliminar el cero.
> Aprecio se consejo de antemano
> fzglz
>
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida