Crear lista desplegable que descarte los valores que ya se seleccionaron en otras celdas

Desde Nicargua.

Mi consulta es la siguiente: Cree una lista desplegable con nombres en la celda A1 y A2 y todo bien hasta ahí el problema es que necesito que los registros que ya selecciones no se muestren en la siguiente lista. Es decir en la celda A1 tengo seleccionado a Jose Ríos por ejemplo, entonces quiero que en la celda A2 ya "NO APAREZCA JOSE RÍOS EN LA LISTA DESPLEGABLE" y así sucesivamente conforme vaya seleccionando se vayan descartando de la lista desplegable los registros.

1 respuesta

Respuesta
1

 H  o l  a :

En un nuevo libro realiza lo siguiente:

1. Crea 3 hojas.

2. En los eventos de la hoja1 pondrás los eventos

3. La segunda hoja la llamas "Nombres"

4. En la hoja "Nombres" vas a poner los todos tus nombres desde la celda A2 hacia abajo.

5. La tercera hoja la llamas "Temp"

6. Pon la siguiente macro en los eventos de la hoja1

Private Sub Worksheet_SelectionChange(ByVal target As Range)
'Por.Dante Amor
    If target.Count > 1 Then Exit Sub
    Set celdas = Range("A1:A10")    'rango de celdas con validación
    Set h1 = Sheets("Nombres")      'hoja con los nombres
    rango_nombres = "A2:A20"        'rango de celdas con los nombres
    Set h2 = Sheets("Temp")
    '
    col = "J"
    If Not Intersect(target, celdas) Is Nothing Then
        h2.Cells.Clear
        u = h1.Range(col & Rows.Count).End(xlUp).Row
        j = 1
        For Each r In h1.Range(rango_nombres)
            existe = False
            For Each c In celdas
                If c.Address <> target.Address Then
                    If r.Value = c.Value Then
                        existe = True
                        Exit For
                    End If
                End If
            Next
            If existe = False Then
                h2.Cells(j, "A") = r.Value
                j = j + 1
            End If
        Next
        '
        u2 = h2.Range("A" & Rows.Count).End(xlUp).Row
        With target.Validation
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
                Operator:=xlBetween, Formula1:="=" & h2.Name & "!A1:A" & u2
            .IgnoreBlank = True
            .InCellDropdown = True
            .InputTitle = ""
            .ErrorTitle = ""
            .InputMessage = ""
            .ErrorMessage = ""
            .ShowInput = True
            .ShowError = True
        End With
    End If
End Sub

La macro se va a encargar de crear las listas de validación. No es necesario que las crees.


Sigue las Instrucciones para poner la macro en los eventos de worksheet

  1. Abre tu libro de excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet(Hoja1)
  4. En el panel del lado derecho copia la macro

En la macro tienes que actualizar estos datos:

    Set celdas = Range("A1:A10")    'rango de celdas con validación
    Set h1 = Sheets("Nombres")      'hoja con los nombres
    rango_nombres = "A2:A20"        'rango de celdas con los nombres

"A1:A10", por las celdas donde quieres la validación.

"A2:A20", por las celdas donde tienes todos los nombres.


Si tienes dificultades para adaptar la macro a tus datos, envíame tu archivo.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas