Foros del Web » Soporte técnico » Ofimática »

Dudas de excel

Estas en el tema de Dudas de excel en el foro de Ofimática en Foros del Web. Hola, yo estudie excel en la facu (no saquen cuentas, hace muuuuucho tiempo ;) ) pero a pesar que estudie Diseño Gráfico me desenvuelvo bastante ...
  #1 (permalink)  
Antiguo 13/01/2010, 05:20
Avatar de AndyDG  
Fecha de Ingreso: septiembre-2006
Ubicación: Granada España
Mensajes: 187
Antigüedad: 17 años, 7 meses
Puntos: 16
Desacuerdo Dudas de excel

Hola, yo estudie excel en la facu (no saquen cuentas, hace muuuuucho tiempo ;) ) pero a pesar que estudie Diseño Gráfico me desenvuelvo bastante bien..
se que a lo mejor es una estupi.... lo que pregunto pero bueno ahí va...
tengo una lista de telefonos que tienen numero por nombre
ejemplo

1000
1100
1110
2630
2680

pero ademas tengo
1100i
2630i
y como es de esperar le pongo ordenar alfabeticamente y me los separa, es decir los numeros solos encima y los que tienen letra debajo y yo quiero que me los mezcle, que me los ordene con las letras tambien...

es decir

1000
1100
1100i
1110
2630
2630i
2680

Hay solucion para esto? o lo tengo que hacer manualmente?
Gracias a todos
__________________
Saber y Saber Hacer
  #2 (permalink)  
Antiguo 13/01/2010, 14:09
Avatar de mrocf  
Fecha de Ingreso: marzo-2007
Ubicación: Bs.As.
Mensajes: 1.103
Antigüedad: 17 años, 1 mes
Puntos: 88
De acuerdo Respuesta: Dudas de excel

Hola! AndyDG.

1º) Haz clic con el botón derecho de tu ratón en la etiqueta de la hoja y selecciona: Ver código.

2º) En la ventana que se te abrirá copia y pega el siguiente código:
Código PHP:
Sub Ordenar()
With Selection
  
.NumberFormat "@"
  
.Formula = .Formula
  
.Sort Key1:=.Item(1), Header:=xlNoDataOption1:=xlSortNormal
  
.NumberFormat "General"
  
.Formula = .Formula
End With
End Sub 
3º) Cierra todas las ventanas del ambiente Visual Basic for Application en el que te encuentras y retorna al Excel.

4º) Selecciona el rango a ordenar

5º) Ejecuta la macro llamada Ordenar

Comenta, por favor, como te he ido, ¿si?.

Saludos, Cacho.
  #3 (permalink)  
Antiguo 14/01/2010, 05:19
Avatar de AndyDG  
Fecha de Ingreso: septiembre-2006
Ubicación: Granada España
Mensajes: 187
Antigüedad: 17 años, 7 meses
Puntos: 16
Respuesta: Dudas de excel

Hola cacho, primero gracias por contestar, en principio crei que me lo habia hecho pero no, mira te pongo lo que me hizo... se acerca mucho pero no me lo ordena bien...
123
1233
123i
1252
1252i
132

en principìo estaria genial, pero es que me puso el 123, luego el 1233 y luego el 123i... nos vamos acercando pero no es del todo correcto...

Gracias por pensar en la solucion de todo corazon...

A ver si logran (porque yo no se como hacerlo) encontrar la respuesta...
__________________
Saber y Saber Hacer
  #4 (permalink)  
Antiguo 14/01/2010, 07:35
Avatar de mrocf  
Fecha de Ingreso: marzo-2007
Ubicación: Bs.As.
Mensajes: 1.103
Antigüedad: 17 años, 1 mes
Puntos: 88
De acuerdo Respuesta: Dudas de excel

Parece que se te olvidó comentar que tu lista no solo tiene cifras de 4 números... sino de 3... quizás de 5... ¿Habrás omitido comentar otra cosa importante?

Dos preguntas:

1º) ¿La única letra que puede "cerrar" el número es una "i" ó tienes otras letras, ó combinaciones de letras?

2º) ¿En que rango tienes distribuída la información?

Cualquier otro dato que tú estés viendo y que nosotros no vemos es relevante...

Saludos, Cacho.
  #5 (permalink)  
Antiguo 14/01/2010, 08:19
Avatar de AndyDG  
Fecha de Ingreso: septiembre-2006
Ubicación: Granada España
Mensajes: 187
Antigüedad: 17 años, 7 meses
Puntos: 16
Respuesta: Dudas de excel

Hola si mil disculpas es que no me di cuenta que podia ser tan importante eso...
ren en cuenta que son mas de 200 modelos, por ahora (nokia saca modelos todos los dias casi) y cuando sacan una version nueva de un tel antiguo le ponen una letra o un nombre aparte del numero...
ejemplo real de una minima parte del listado:

1110
2330
2710
3100
3110
3120
3200
3210
1110i
1680 Classic
2220 Slide
2323 Classic
2330 Classic
2600 Classic
2680 Slide
2700 Classic
2700 Classic
2720 Fold
2730 Classic
2730c
3109 Classic
3110 Classic
3110 Evolve
3120 Classic
3500 Classic
3510i
3600 Slide
3610 Fold
3710 Fold
3720 Classic
5030 XpressRadio
5130 XpressMusic
5140i

pero tambien hay que comienzan con letras como

E50
E51
E52
E55
E60
E61
E61i
E62
E63
E65

pero estos curiosamente si me los ordena bien
el problema lo tengo con los que comienzan con números...

no se que mas datos puedes necesitar...

Gracias desde ya de nuevo por todo este tiempo que dedicas...
__________________
Saber y Saber Hacer
  #6 (permalink)  
Antiguo 14/01/2010, 08:59
Avatar de mrocf  
Fecha de Ingreso: marzo-2007
Ubicación: Bs.As.
Mensajes: 1.103
Antigüedad: 17 años, 1 mes
Puntos: 88
Respuesta: Dudas de excel

Los que comienzan con letras los ordenará bien hasta tanto no aparezca el modelo:
E104

por ejemplo.

Prueba y verás que tienes un problema con eso.
Seré curioso: ¿Para qué quieres tenerlos ordenados de ese modo?
  #7 (permalink)  
Antiguo 14/01/2010, 10:37
Avatar de ceSharp  
Fecha de Ingreso: octubre-2008
Ubicación: Madrid
Mensajes: 495
Antigüedad: 15 años, 6 meses
Puntos: 66
Respuesta: Dudas de excel

hola andy,

quizá esta solución es un pelin más complicada, pero para tu caso necesitas algo muy genérico ya que los números de terminal no tiene una longitud fija (4 caracteres, 3 e incluso 2 caracteres) ni las letras tampoco.

vamos por pasos.
1) abre tu hoja excel
2) pulsa Alt+F11 (aparecerá el árbol de hojas para introducir código VBA)
3) click derecho en el árbol donde dice Microsoft Excel Objetos
4) Insertar-->Módulo
5) Pega este código en el módulo creado
'----------------------------------
Public Sub orden()
Dim num As Integer
num = 1
Dim numeros As String
Dim letras As String
Dim primerCaracter As String
'recorremos toda la columna A hasta que encuentre un vacío
Do
Dim movil As String
movil = Hoja1.Range("A" & num)
'comprobamos si el primer caracter es letra o número
If IsNumeric(Mid(movil, 1, 1)) Then
primerCaracter = "numero"
Else
primerCaracter = "letra"
End If
'hacemos un bucle con el contenido de la celda para separar números de letras
For i = 1 To Len(movil)
If IsNumeric(Mid(movil, i, 1)) Then
numeros = numeros & Mid(movil, i, 1)
Else
letras = letras & Mid(movil, i, 1)
End If
Next
'finalizado el bucle mostramos los resultados en las columnas B y C
'en función de su el primer caracter es número o letra
If primerCaracter = "letra" Then
Hoja1.Range("C" & num) = numeros
Hoja1.Range("B" & num) = letras
Else
Hoja1.Range("B" & num) = numeros
Hoja1.Range("C" & num) = letras
End If
num = num + 1
numeros = ""
letras = ""
primerCaracter = ""
Loop Until Hoja1.Range("A" & num) = ""
End Sub
'---------------------------------------
6) En el mismo árbol haz doble click en Hoja1
7) Pega este código
'--------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Call orden
End Sub
'---------------------------

De esta manera tu debes de escribir los terminales en la columna A y automáticamente Excel te va a separar las letras de los números. Ahora lo que puedes hacer es ordenar los terminales con los criterios de las columnas B y C.

espero que sepas implementarlo y, por supuesto, que te sirva! ;)

salu2
  #8 (permalink)  
Antiguo 14/01/2010, 10:49
Avatar de ceSharp  
Fecha de Ingreso: octubre-2008
Ubicación: Madrid
Mensajes: 495
Antigüedad: 15 años, 6 meses
Puntos: 66
Respuesta: Dudas de excel

... se me olvidaba,

aún con todo no es del todo genérico este método pero se acerca bastante a tus necesidades.

Ten en cuenta que no puedes escribir terminales que mezclen números y letras constantemente, es decir, numeros+letras o letras+numeros. (no vale E1000Clasic porque este método te separaría 1000 por un lado y EClasic por otro)

Y otra cosa--> El método comprueba todas las filas hasta que encuentra un vacío en la columna A. Si metes números de terminal saltándote una fila esos no los va a comprobar.

salu2
  #9 (permalink)  
Antiguo 14/01/2010, 12:11
Avatar de AndyDG  
Fecha de Ingreso: septiembre-2006
Ubicación: Granada España
Mensajes: 187
Antigüedad: 17 años, 7 meses
Puntos: 16
Respuesta: Dudas de excel

Es que tengo una tienda de liberacion de moviles y reparacion de ordenadores, y tengo clientes que tienen a su vez tiendas y les doy un listado de precios, pero si se los ordeno por precios se hacen lio, asique se los ordeno alfanumericamente para que busquen el modelo y lo vean rapido y el precio al lado... no se si me explico bien...

Ce Sharp cuando llege a casa lo pruebo y te digo
__________________
Saber y Saber Hacer
  #10 (permalink)  
Antiguo 14/01/2010, 12:31
Avatar de mrocf  
Fecha de Ingreso: marzo-2007
Ubicación: Bs.As.
Mensajes: 1.103
Antigüedad: 17 años, 1 mes
Puntos: 88
De acuerdo Respuesta: Dudas de excel

Hola! AndyDG

1º) Reemplaza el código anterior por este otro:
Código PHP:
Dim Celda As Rangeii As IntegerRng As Range

Sub Ordenar
()
Application.ScreenUpdating False
Set Rng 
= [AA:AB]: Rng.ClearContents

Rem Desglosa tipos de teléfonos
For Each Celda In Selection
  
If IsNumeric(Left(Celda1)) Then
    NumLet
  
Else
    
LetNum
  End 
If
Next Celda

Rem Ordena

Rng
.Sort Key1:=Rng(3), Order1:=xlAscending_
  Key2
:=Rng(4), Order2:=xlAscending

With Selection
  
.NumberFormat "@"
  
.Value Evaluate("transpose(transpose(" _
    Rng
(1).Resize(Selection.Rows.Count).Address " & " _
    Rng
(1).Offset(, 1).Resize(Selection.Rows.Count).Address "))")
End With

Rng
.Delete
Application
.ScreenUpdating True
End Sub

Rem Separa número de texto
Private Sub NumLet()
    
For 
ii Len(CeldaTo 1 Step -1
  
If IsNumeric(Mid(Celdaii1)) Then Exit For
Next ii
Cells
(65536Rng(1).Column).End(xlUp).Offset(1) = Left(Celdaii)
Cells(65536Rng(1).Column).End(xlUp).Offset(, 1) = _
  Right
(CeldaLen(Celda) - ii)

End Sub


Rem Separa texto de número
Private Sub LetNum()

For 
ii 1 To Len(Celda)
  If 
IsNumeric(Mid(Celdaii1)) Then Exit For
Next ii
Cells
(65536Rng(1).Column).End(xlUp).Offset(1) = Left(Celdaii 1)
Cells(65536Rng(1).Column).End(xlUp).Offset(, 1) = Mid(Celdaii20)

End Sub 
2º) Selecciona el rango a ordenar

3º) Ejecuta la macro llamada Ordenar

Comenta, por favor, como te he ido, ¿si?.

Saludos, Cacho.

Última edición por mrocf; 15/01/2010 a las 07:21
  #11 (permalink)  
Antiguo 14/01/2010, 12:38
Avatar de AndyDG  
Fecha de Ingreso: septiembre-2006
Ubicación: Granada España
Mensajes: 187
Antigüedad: 17 años, 7 meses
Puntos: 16
Respuesta: Dudas de excel

A ver si así puedo ser un poquito mas explícita... He subido una copia de mi archivo a mi host para que lo descarguen y vean lo que estoy haciendo...

http://personal.auna.com/chebanet/Modelos.xls

Lo que necesito como les dije antes es una ordenación alfabéticamente pero de los modelos que llevan " i " como un sub-modelo y en otras marcas como en el caso de Nokia han salido algunos modelos que son "modelo" antiguo pero en version nueva como por ejemplo 6600 Fold...

Lo que haría que el listado entonces debiera quedar de la siguiente forma...

6600
6600 Fold
6600 Slide
6600i Slide

No se si me hecho comprender la idea... a ver si me puden dar una manito porque la verdad que no se como resolver esto... muchas gracias...
__________________
Saber y Saber Hacer
  #12 (permalink)  
Antiguo 15/01/2010, 06:51
 
Fecha de Ingreso: enero-2010
Mensajes: 94
Antigüedad: 14 años, 3 meses
Puntos: 6
Respuesta: Dudas de excel

Acabo de probarlo y el siguiente método funciona:

1) Introduce la tilde (') en una segunda columna al lado de los registros.

2) En una tercera columna utilizando la función CONCATENAR juntas la columna de las tildes con la de los registros (por ejemplo, '6600, la tilde no va a aparecer en el resultado).

3) Si ordenas por esa columna, ordenará como tú quieres. Luego te queda la opción de copiar y pegar como valor para no tener las fórmulas.
  #13 (permalink)  
Antiguo 15/01/2010, 06:58
Avatar de AndyDG  
Fecha de Ingreso: septiembre-2006
Ubicación: Granada España
Mensajes: 187
Antigüedad: 17 años, 7 meses
Puntos: 16
Respuesta: Dudas de excel

Lo probaron en el documento que esta colgado?
porque para ordenar la columna de los moviles me va de perlas, pero la segunda columna no me la ordena y me da un error...

hiperweb no te entendi nada... ya lo leere mas tranquilamente...
__________________
Saber y Saber Hacer

Última edición por AndyDG; 15/01/2010 a las 07:25
  #14 (permalink)  
Antiguo 15/01/2010, 07:01
Avatar de mrocf  
Fecha de Ingreso: marzo-2007
Ubicación: Bs.As.
Mensajes: 1.103
Antigüedad: 17 años, 1 mes
Puntos: 88
Respuesta: Dudas de excel

Fue un gusto ayudarte.
Saludos, Cacho.

Etiquetas: excel
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:19.