............ Foro Excel
Si no lo has hecho aún: REGISTRATE!!!

Problema en Combobox y Registros Duplicados. Función CountIfs

Ver el tema anterior Ver el tema siguiente Ir abajo

Problema en Combobox y Registros Duplicados. Función CountIfs

Mensaje por davidsagal el Lun Jul 27, 2015 1:51 am

Hola amigos. Tengo un problema con un Combobox del userform. Tengo que cargar datos de una hoja a este combobox, pero omitiendo los registros duplicados, quiero decir, que únicamente me devuelva los registros únicos. Este punto lo tengo solucionado con la función CountIF. Pero, por necesidades laborales, la cosa se me complica más y aquí es donde la función CountIf no me sirve, puesto que, a priori, intervienen más criterios. Lo he intentado con CountIfs, pero hay algo que mi nivel de programación no da más de si. La Hoja donde se encuentran los datos, se ve así:
[Tienes que estar registrado y conectado para ver esa imagen]
El Userform está compuesto por un Combobox y un Listbox.
[Tienes que estar registrado y conectado para ver esa imagen]
Les adjunto el código y les explico mi intención:
Código:
Dim items, i, x, y

Private Sub ComboBox1_Change()
    Me.ListBox1.Clear
    items = Hoja1.Range("Tabla1").CurrentRegion.Rows.Count
        
        For i = 2 To items 'Soporte y Fecha
            
            ''''''''''''''''''Soporte''''''''''''''''Fecha'''''''''''''''Fecha Sistema''''''''
            If Me.ComboBox1 = Hoja1.Cells(i, 1) And Hoja1.Cells(i, 3) = Hoja1.Cells(2, 5) And Hoja1.Cells(i, 4) = Hoja1.Cells(2, 6) Then
                Me.ListBox1.AddItem Hoja1.Cells(i, 1) 'Soporte
                Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = Hoja1.Cells(i, 2) 'No Bloque
            End If
        Next i
End Sub

Private Sub UserForm_Initialize()
    Dim Fila As Integer
    Dim Final As Integer
    Dim Registro As Integer
    Dim Registro1 As Integer
    Dim Registro2 As Integer
    
    Hoja1.Activate
        Me.ListBox1.ColumnCount = 2
        Me.ListBox1.ColumnWidths = "100;70"
        
    Fila = 2

    Do While Hoja1.Cells(Fila, 1) <> "" And Hoja1.Cells(Fila, 3) <> Hoja1.Cells(2, 5)
        Fila = Fila + 1
    Loop
    
        Final = Fila - 1
        
        
            With Hoja1
            
                For Fila = 2 To Final
          
                ''''''' Aquí pretendo que el Combobox capture los Registros Unicos, de la Columna Soporte, que se han grabado con una Fecha(col Fecha) y dentro de una Jornada de trabajo(col Jornada Laboral). Las celdas (2,5) y (2,6) hacen de celdas referencia para guardar los datos en sus columnas correspondientes. El proceso de Registro de Datos lo hago con otro formulario. Pero, el problema me viene al intentar Capturar los Soportes únicos con el combobox y la función countIf o Conuntifs.
                                  
                Registro = WorksheetFunction.CountIf(.Range(.Cells(2, 1), .Cells(Fila, 1)), .Cells(Fila, 1)) And WorksheetFunction.CountIf(.Range(.Cells(2, 3), .Cells(Fila, 3)), .Cells(2, 5)) And WorksheetFunction.CountIf(.Range(.Cells(2, 4), .Cells(Fila, 4)), .Cells(2, 6))

                        If Registro = 1 Then
                        
                            Me.ComboBox1.AddItem .Cells(Fila, 1)
                            
                        End If

                Next Fila
                
            End With
End Sub

No se si me expliqué con claridad, por eso les pongo el código.
Gracias de antemano.

davidsagal

Masculino Cantidad de envíos : 19
Edad : 40
Ciudad - Pais : ESPAÑA
Version de Excel : 2010
Fecha de inscripción : 05/01/2011

Volver arriba Ir abajo

Re: Problema en Combobox y Registros Duplicados. Función CountIfs

Mensaje por davidsagal el Miér Jul 29, 2015 9:12 am

Nadie, amigos?

davidsagal

Masculino Cantidad de envíos : 19
Edad : 40
Ciudad - Pais : ESPAÑA
Version de Excel : 2010
Fecha de inscripción : 05/01/2011

Volver arriba Ir abajo

Re: Problema en Combobox y Registros Duplicados. Función CountIfs

Mensaje por davidsagal el Lun Ago 03, 2015 5:22 am

Ya lo solucioné. Mediante una Colección. Así, después, solamente tengo que validar ciertas condiciones.
Código:
Private Sub ComboBox1_Change()
Dim ContaReg As Integer
    Me.ListBox1.Clear
    Label3.Visible = False

    ContaReg = 0

    items = Hoja1.Range("Tabla1").CurrentRegion.Rows.Count

        For i = 2 To items


            If Me.ComboBox1 = Hoja1.Cells(i, 1) And Hoja1.Cells(i, 3) = Hoja1.Cells(2, 5) And Hoja1.Cells(i, 4) = Hoja1.Cells(2, 6) Then

                Me.ListBox1.AddItem Hoja1.Cells(i, 1) 'Soporte
                Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = Hoja1.Cells(i, 2) 'No Bloque

                ContaReg = ContaReg + 1
            End If
        Next i

        Label3.Visible = True
        Label4.Caption = ContaReg

End Sub



Private Sub UserForm_Initialize()
    Dim i As Long
    Dim j As Long
    Dim Fila As Integer
    Dim Final As Integer
    Dim ws As Worksheet
    Dim colList As Collection
    Dim wsLR As Long
    
    Set colList = New Collection
    Set ws = ThisWorkbook.Sheets("Hoja1")
    
    
    Hoja1.Activate
        Me.ListBox1.ColumnCount = 2
        Me.ListBox1.ColumnWidths = "100;70"
        
    
    
    wsLR = ws.Cells(Rows.Count, 1).End(xlUp).Row
    
        
        
            With Hoja1
            
                For i = 2 To wsLR
                    On Error Resume Next
                    If .Cells(i, 3).Value = .Cells(2, 5) And .Cells(i, 4).Value = .Cells(2, 6) Then
                        colList.Add .Cells(i, 1).Value, CStr(.Cells(i, 1))
                    End If
                        On Error GoTo 0
                Next i
                
                For j = 1 To colList.Count
                    Me.ComboBox1.AddItem colList(j)
                Next j
                
            End With
End Sub

davidsagal

Masculino Cantidad de envíos : 19
Edad : 40
Ciudad - Pais : ESPAÑA
Version de Excel : 2010
Fecha de inscripción : 05/01/2011

Volver arriba Ir abajo

Re: Problema en Combobox y Registros Duplicados. Función CountIfs

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 
Permisos de este foro:
No puedes responder a temas en este foro.