Filtrar por grupos si cualquier celda sel grupo cumple un criterio

Tengo una tabla de valores repartidas por grupos de entre 5 y 10 filas y necesito filtrar de algún modo, o dar formato condicional o separar de algún modo los grupos que me cumplan que si algún elemento dentro del grupo cumple un criterio, que me de formato o me filtre el grupo entero. Sé hacerlo por filas sin problemas con la función Y(B2="Raza1";C2=100), de esta forma me da formato a las filas que cumplan los criterios de esas dos celdas, pero cada fila tiene una primera celda que es "grupo", por ejemplo mis 10 primeras dilas son grupo1, las 5 siguientes grupo2, las 7 siguientes grupo3. Pues yo necesito que si dentro de esas 10 primeras filas que son grupo1, cualquiera de la fila cumple Y(B2="Raza1";C2=100), que el formato o filtro se aplique a las 10 filas y no sólo a una. ¿Puede hacerse?

Respuesta
1

Puedes enviarme un archivo con 2 hojas. En la primera hoja pon ejemplos reales de tus datos. En la segunda hoja, pon esos mismos ejemplos, pero pon los datos que cumplen con las condiciones con el formato que te gustaría ver.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “anais de gea hernandez

Te anexo la macro

Sub Separar_Datos()
'----
'Por.Dante Amor
'----
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Application.StatusBar = False
    Set h1 = Sheets("Hoja1")    'hoja con datos
    Set h2 = Sheets("Hoja2")    'hoja temporal
    Set h3 = Sheets("Hoja3")    'hoja temporal
    Set h4 = Sheets("temp")     'hoja temporal
    col = "A"                   'columna clave
    ucol = "D"                  'ultima columna de datos
    '
    'Limpia hojas
    n = Columns(col).Column
    H2.Rows("2:" & Rows. Count). Clear
    H3.Rows("2:" & Rows. Count). Clear
    H4. Cells. Clear
    If h1.AutoFilterMode Then h1.AutoFilterMode = False
    u1 = h1.Range("A" & Rows.Count).End(xlUp).Row
    h1.Range("A2:" & ucol & u1).Interior.ColorIndex = 6
    '
    'Selecciona grupos únicos
    h1.Columns(col).Copy h4.[A1]
    u4 = h4.Range("A" & Rows.Count).End(xlUp).Row
    h4.Range("A1:A" & u4).RemoveDuplicates Columns:=1, Header:=xlYes
    '
    u4 = h4.Range("A" & Rows.Count).End(xlUp).Row
    For i = 2 To u4
        Application.StatusBar = "Revisando Grupo " & i - 1 & " de " & u4 - 1
        clave = h4.Cells(i, "A")
        res = WorksheetFunction.CountIfs(h1.Range("A1:A" & u1), clave, _
                                         h1.Range("B1:B" & u1), h1.Range("G1"), _
                                         h1.Range("C1:C" & u1), 100)
        If res = 0 Then
            u = h1.Range("A" & Rows.Count).End(xlUp).Row
            h1.Range("A1:" & ucol & u1).AutoFilter Field:=n, Criteria1:=clave
            u3 = h3.Range("A" & Rows.Count).End(xlUp).Row + 1
            h1.Range("A2:" & ucol & u).Copy h3.Range("A" & u3)
            h1.Range("A2:" & ucol & u).Interior.ColorIndex = xlNone
            h1.AutoFilterMode = False
        End If
    Next
    If h1.AutoFilterMode Then h1.AutoFilterMode = False
    h2.Cells.Interior.ColorIndex = 6
    Application.StatusBar = False
    MsgBox "Filtros realizados"
End Sub

.

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

.

Avísame cualquier duda

.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas