Listbox con datos no repetidos

Tengo un listbox que me trae los números de las facturas pendientes de pago los cuales se encuentran en una hoja llamada "SALDO PENDIENTE", por ello en el Listfillrange tiene la siguiente instuccion:

'CONFIG. PAGOS'!$K$2:$k$1000

Los números de las facturas ya pagadas se guardan en una hoja llamada "PAGOS", y dicho dato se registra en la columna K.

Quisiera saber que instrucción puedo darle al Lisftillrange para que me tome los datos de las columnas K de las 2 hojas mencionadas, pero que me muestre solo los que no se repiten en ambas hojas, por ejemplo, si la factura 790 (que aparece en la hoja "saldo pendiente"), aparece tambien registrada como pagada en la hoja "pagos", que no se muestre en el listbox.

1 respuesta

Respuesta
1

Si estás trabajando con versiones Excel desde la 2007 en adelante, debieras copiar cada col K en un rango auxiliar (uno debajo del otro), aplicar la herramienta 'Quitar duplicados' del menú Datos y esa tabla resultante asignarla a tu control.

Esta sería una macro de ejemplo. Debes ajustar nombres de hoja, col auxiliar (X en mi caso) y fin de cada rango (30 en mi ejemplo).

Sub EJEMPLO()
'x Elsamatilde
'macro que junta 2 tablas y quita duplicados
'hoja activa = CONFIG.PAGOS
    Range("K2:K30").Copy Destination:=Range("X2")
    Sheets("PAGOS").Range("K2:K30").Copy Destination:=Range("X" & Rows.Count).End(xlUp).Offset(1, 0)
    Application.CutCopyMode = False
    'se quitan duplicados
    Columns("X:X").Select
    ActiveSheet.Range("$X$1:$X$" & Range("X" & Rows.Count).End(xlUp).Row).RemoveDuplicates Columns:=1, Header:=xlNo
    'se ordena la tabla resultante
    ActiveWorkbook.Worksheets("CONFIG.PAGOS").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("CONFIG.PAGOS").Sort.SortFields.Add Key:=Range( _
        "X1:X" & Range("X" & Rows.Count).End(xlUp).Row), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("CONFIG.PAGOS").Sort
        .SetRange Range("X1:X" & Range("X" & Rows.Count).End(xlUp).Row)
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Range("P1").Select
'aquí te queda la tabla lista para asignarla al control
End Sub

Sdos

Elsa

¡Gracias! muy buena la solución propuesta, no se me habría ocurrido, estoy seguro que con ello podré solucionar mi problema.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas