Contar palabras "que empiecen por" condicionadas

Hace días que quiero contar en una lista, el número de personas con apellido que empiece por la letra "g" y que además en otra columna conste que están suscritos. Ej:
A1. Apellidos B1. Suscritores
Fernández x
García
Villa x
González x
García x
Andreu x
Gómez
En ejemplo vemos que hay quatro personas que empiezan su apellido con "g" pero sólo están suscritas 2.
He probado con la fórmula  =SUMAPRODUCTO((A2:A8="g*")*(B2:B8="x")) pero me da 0. En cambio si pongo "garcía", sí que los cuenta, pero necesito que cuente todos los que empiezan por "g".
Y otra pregunta, supongamos que en la columna C tengo el dinero que ingresan los suscritores (que puede variar). ¿Cómo se suman las cantidades de los que empiezan por "g" y están marcados con una "x"?

1 respuesta

Respuesta
1
He tratado de hacerlo con fórmulas y no lo consigo, pero con macros ya lo he solucionado, busco la inicial que tengo colocada en la celda E2 (en este caso "G") y cuenta todos los apellidos que empiezan con esa letra y en la casilla de suscriptores tienen una "X" (En la columna B) y pongo el resultado en la F2 y ademas suma la cantidad el total de esa cantidad lo pongo en la G2. El resultado lo puedes poner donde tú quieras y la inicial de los apellidos también, solo tendrías que modificar esos valores en la macro. Para colocar esta macro, selecciona la pestaña de la hoja en la que trabajas y pincha con el ratón rderecho en la pestaña y selecciona VER CÓDIGO, en la pantalla que te sale, pega este código en la parte derecha.
Espero que te sirva. Yo por otra parte intentare solucionarlo con fórmulas, pero lo veo difícil.
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column < 4 Then
    busco = UCase(Range("e2"))
    With Range("a:a")
        Set c = .Find(busco, LookIn:=xlValues)
        If Not c Is Nothing Then
            firstAddress = c.Address
            Do
                If UCase(Left(c, 1)) = busco And UCase(c.Offset(0, 1)) = "X" Then
                    cuenta = cuenta + 1
                    pasta = pasta + c.Offset(0, 2)
                End If
                Set c = .FindNext(c)
            Loop While Not c Is Nothing And c.Address <> firstAddress
        End If
        Range("f2") = cuenta
        Range("g2") = pasta
    End With
    End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas