Lista en excel para combobox

Quisiera me ayuden con la siguiente inquietud:

Tengo un combobox el cual carga los datos de una lista que esta en una hoja de excel, el detalle es que me salen los nombres de manera desordenada y repetidos (los hay en la hoja), hay manera de que la lista salga en orden alfabetico y no salgan los repetidos en el combobox

1 respuesta

Respuesta
2

Lo más sencillo es copiar la lista en un rango auxiliar, quitarle los duplicados y ordenarla.

Tu combobox se alimentará luego de esta lista auxiliar.

Podés realizar estos pasos con la grabadora de macros ... o ajustar las referencias que tiene esta macro que te dejo como ejemplo. Van los comentarios para guiarte.

Sub obtenerListaOrdenada()
'x Elsamatilde
'se copia la col B a la M para quitarle duplicados y ordenarla
    Columns("B:B").Copy Destination:=[M1]
    'se quitan duplicados, mi lista tiene encabezados
    Range("$M$1:$M$" & Range("M" & Rows.Count).End(xlUp).Row).RemoveDuplicates Columns:=1, Header:=xlYes
    'se ordena de menor a mayor
    ActiveSheet.Sort.SortFields.Add Key:=Range("M2:M" & Range("M" & Rows.Count).End(xlUp).Row) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveSheet.Sort
        .SetRange Range("M2:M" & Range("M" & Rows.Count).End(xlUp).Row)
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Range("M2").Select
End Sub

Si esta respuesta resuelve tu consulta no olvides valorarla (excelente o buena)... sino comenta y la seguimos tratando.

Gracias por tu respuesta, estuve probando la macro pero me da error en la línea

.Apply

¿Sera por qué hay filas en blanco que no permite terminar la macro?

Inhabilitá esa línea y probala nuevamente... luego me comenta´s.

Sdos!

Ahora me sale este error 

Mi macro solo es un ejemplo y esta correctamente probada.

Desconozco donde y como están ubicados tus datos ni como ajustaste el código que te envíe.

Pásame a mi correo solo la hoja con la información para adaptarte la macro. Mis correos aparecen en el sitio que dejo al pie o dejame aquí tu correo.

Sdos!

La instrucción del pase al rango auxiliar que te envié era:

Columns("B:B").Copy Destination:=[M1]

Pero en tu adaptación, como tu tabla empieza en la fila 2 colocaste el pegado en AE2 y entonces el origen (toda la columna) es mayor al destino (que empieza en fila 2).

Viendo tu modelo ajusté el inicio de la macro quedando de este modo:

Sub obtenerListaOrdenada()
'x Elsamatilde
'limpiar col auxiliar
Columns("AE:AE").ClearContents
'se copia la col J a la AE para quitarle duplicados y ordenarla
    Range("J2:J" & Range("J" & Rows.Count).End(xlUp).Row).Copy Destination:=[AE1]
    'se quitan duplicados, mi lista tiene encabezados
    Range("$AE$2:$AE$" & Range("AE" & Rows.Count).End(xlUp).Row).RemoveDuplicates Columns:=1, Header:=xlYes
    'se ordena de menor a mayor
    ActiveSheet.Sort.SortFields.Add Key:=Range("AE2:AE" & Range("AE" & Rows.Count).End(xlUp).Row) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveSheet.Sort
        .SetRange Range("AE2:AE" & Range("AE" & Rows.Count).End(xlUp).Row)
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Range("AE2").Select
End Sub

Sdos!

¡Gracias! Elsa Matilde por tu respuesta y disculpa que no haya respondido enseguida, la probé y ahí si ejecuto la macro, gracias nuevamente por tu ayuda

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas