Nombres ordenados

Admirado Experto:
Tengo la siguiente duda.
En varias hojas de un libro (50) tengo en la misma celda H22 un nombre distinto.
Hay algunas hojas que en esa celda no hay nombre.
¿Se pueden ordenar alfabéticamente los nombres de esa celda en las diferentes hojas?
Saludos de María Aurelia.

1 respuesta

Respuesta
1
O sea que...
Las hojas NO cambian de intentar, ¿los nombres en la celda H22 las puedo mover libremente?, por que no me envías tu archivo compreso a mi correo, saludos...
Mauricio
MbsARROBAinboxPUNTOnet
¡Hola Mauricio!
Gracias por contestarme tan pronto.
Tu interpretación es correcta, nombres ordenados alfabéticamente de la A-Z, pero me interesaría, en principio, que lo que se moviese fueran los nombres en H22 respetando las hojas.
Los nombres son los que se ordenan y van ocupando su posición en las distintas H22 de las 50 hojas(supongo que hay que tener en cuenta que puede haber alguna sin nombre, te doy esta información por si importa a la hora de hallar una solución).
Si esto no se puede hacer también me valdría que lo que se ordenase fuera las hojas según el nombre que aparezca en su H22 correspondientes.
Venga, ayúdame, por favor, que tienes fama de ser un "Gran" conocedor de esta materia.
Un beso de :
María Aurelia
Haber si entendí, tienes 50 hojas, en cada hoja en la celda H22 hay un nombre, algunas están vacías, estos nombres los quieren ordenar alfabéticamente, supongo que de la A-Z, los nombres ni las celda se mueven, lo que se movería seria el orden de las hojas, ¿es correcto?, si es así solo confírmame y lo intentamos, sino, te agradecer si eres mucho más explicita.
Esta es la macro que hace lo que quieres, no se te olvide finalizar la pregunta, gracias...
Option Explicit
Public Sub OrdenarNombres()
Dim co1 As Integer, co2 As Integer
Dim NombreHoja As Integer
Dim strHoja As String
'Mostramos mensaje en la barra de estado
Application.StatusBar = "Ordenando, espere por favor..."
'Desactivamos la actualización en pantalla
Application.ScreenUpdating = False
'Recorremos TODAS las hojas del libro
For co1 = 1 To Worksheets.Count
'Obtenemos el nombre de la hoja, lo convertimos en valor
'para saber si es una hoja numerada
NombreHoja = Val(Worksheets(co1).Name)
If NombreHoja > 0 Then
co2 = co2 + 1
'Guardamos el nombre de la hoja numerada
wsUtil.Cells(co2, 1).Value = NombreHoja
'Guardamos el nombre del alumno
wsUtil.Cells(co2, 2).Value = Worksheets(co1).Range("B3").Value
'Le cambiamos el nombre a la hoja para evitar errores al renumerar
Worksheets(co1).Name = Format(NombreHoja) & "A"
End If
Next co1
'Reordenamos los nombres de los alumnos
wsUtil.Cells(1, 2).Sort Key1:=wsUtil.Cells(1, 2), Order1:=xlAscending, Header:=xlGuess
'Recorremos todos los nombres de los alumnos
For co1 = 1 To co2
'Obtenemos el nombre de la hoja
strHoja = Format(wsUtil.Cells(co1, 1).Value) & "A"
'Movemos la hoja a la posicion correcta
Worksheets(strHoja).Move After:=Worksheets(co1 + 1)
'Establecemos el nuevo numero del alumno
Worksheets(strHoja).Range("A3").Value = co1
'Le cambiamos el nombre a la hoja para la numeracion
Worksheets(strHoja).Name = co1
Next
'Borramos los datos de apoyo guardados
wsUtil.Cells(1, 1).CurrentRegion.ClearContents
'Reactivamos la actualización en pantalla
Application.ScreenUpdating = True
'Liberamos la barra de estado
Application.StatusBar = False
End Sub
Estimado Mauricio:
He estado probando la macro, como todavía no puedo abrir el archivo original por el problema que te comenté, he abierto un libro nuevo y he tratado de reproducir la situación. Pero al ejecutarla me indica lo siguiente:
"Error de compilación".
"No se ha definido la variable".
Y selecciona:
wsUtil.Cells(co2, 1).Value = NombreHoja
Yo he tratado de definir wsUtil como String y como Double pero sigue el error
Primero:
¿Puedes decirme qué es y para que sirve el wsUtil?
Segundo:
¿Este error es por no probarlo en el archivo original y si lo hiciese allí no saldría?
Tercero:
¿Es qué falta algo en el código que me has enviado?
De todas maneras ya sabes que te estoy profundamente agradecida por todo el tiempo que te estoy haciendo perder.
Un beso muy fuerte de :
Aurelia
WsUtil es el nombre de una hoja oculta que agregue a tu archivo, esta puede tener diversas utilidades, como el guardar información y ordenarla, lo cual podría hcaerse con código pero de esta forma es mucho más rapido y eficiente, prueba con el archivo que te envíe y me cuentas.
Admirado EXPERTO:
Me queda otra duda.
Tengo que reconstruir mi archivo, insertaría una hoja en blanco, cambiaría el nombre por wsUtil(esta hoja no tendría ninguna fórmula ni nada de código), iría a Propiedades de hoja y en visible cambiaría por 2-xlSeetVeryHidden. Pegaría en un módulo tu macro y ya está.Si estoy en lo cierto, hasta la próxima.
Si no, haz el favor de comunicármelo por correo.
He encontrado el archivo que me enviaste y tengo que decirte que funciona a la perfección.
No me has defraudado, al contrario me has confirmado que en mi opinión, eres el mejor experto de la página.
Si puedo hacer alguna cosa por ti me lo comunicas y si no mi más profundo agradecimiento de tu admiradora:
Aurelia

Añade tu respuesta

Haz clic para o