Error Checking in Excel
Thanks Thanks:  0
Likes Likes:  0
Results 1 to 8 of 8

Thread: contra valores de una lista sin repetir

  1. #1
    New Member
    Join Date
    Apr 2002
    Posts
    8
    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Default

    Tengo una lista de 100 personas de entre las cuales en realidad son 25 que se repiten hasta sumar 100. Lo que deseo es contar solo los nombres distintos, es decir que para mi ejemplo el resultado sea 25.
    Muchas Gracias.

  2. #2
    MrExcel MVP
    Join Date
    Feb 2002
    Location
    Bogota, Colombia
    Posts
    11,959
    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Default

    Algo así ?

    {=SUMA(1/CONTAR.SI(A1:A100,A1:A100))}

    Es una fórmula matricial, se debe entrar con Control Shift Enter.
    Regards,

    Juan Pablo González
    http://www.juanpg.com

  3. #3
    New Member
    Join Date
    Apr 2002
    Posts
    8
    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Default

    Muchas gracias Juan Pablo,
    El unico inconveniente de dicha formula es que no funciona cuando en el rango encuentra celdas en blanco.
    Aproveche para hacer la consulta en ingles y me dieron esta formula:
    =SUMA(SI(LARGO(A1:A14)>0,1/CONTAR.SI(A1:A14,A1:A14)))

    Podrias darnos un alcance acerca de las formulas matriciales.

    Gracias

    Renzo

  4. #4
    MrExcel MVP
    Join Date
    Feb 2002
    Location
    Bogota, Colombia
    Posts
    11,959
    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Default

    Una fórmula matricial es muy simple. El mejor ejemplo es este:

    Si tengo dos columnas, A y B con números y quiero saber por ejemplo, cuanto es la suma de la multiplicación de cada par (Aunque esto se hace con otra fórmula), la opción "normal" es poner en la columna C la fórmula

    =A1*B1

    y rellenar hasta que se tenga completa la columna, y después sumar estos resultados, cierto ? esto se puede hacer más sencillo con una fórmula matricial así:

    {=SUMA(A1:A10*B1*B10)}

    Lo que Excel hace, muy "inteligentemente" es coger cada elemento de la matriz y multiplicarlo, generando una única matriz (Lo que se "ve" en la Columna C), y suma ese resultado...

    No se si sea claro...
    Regards,

    Juan Pablo González
    http://www.juanpg.com

  5. #5
    New Member
    Join Date
    Apr 2002
    Posts
    8
    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Default

    Juan Pablo,

    Bastante claro tu ejemplo, muchas gracias.

    Saludos,

    Renzo

  6. #6
    New Member
    Join Date
    Jun 2002
    Location
    Chile
    Posts
    7
    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Default

    Tengo un problema muy parecido, y lo resolví bien con sus indicaciones, pero mi rango tiene 5.000 filas de las cuales solo se han ingresado las primeras 200 filas con datos, cantidad que irá creciendo en forma paulatina.
    ¿Puedo Agragar a estas fórmulas un rango "Dinámico", con el fin de no quitar tanto recurso al PC?
    la formula actual es:

    {=SUMA(SI(Clientes!B70:B5000=F13;1/CONTAR.SI(Clientes!D70:D5000;Clientes!D70:D5000)))}

    Gracias!

  7. #7
    MrExcel MVP
    Join Date
    Feb 2002
    Location
    Bogota, Colombia
    Posts
    11,959
    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Default

    Estas fórmulas funcionan también con rangos dinámicos.

    Estos se hacen con rangos nombrados (Control F3) y fórmulas que incluyen DESREF y CONTARA o CONTAR.SI, o COINCIDIR, dependiendo del tipo de datos utilizados. En el foro en inglés hay varios ejemplos, depronto buscando por 'Dynamic Ranges'

    Si tiene problemas, escriba de nuevo y pondré algunos ejemplos.
    Regards,

    Juan Pablo González
    http://www.juanpg.com

  8. #8
    New Member
    Join Date
    Jun 2002
    Location
    Chile
    Posts
    7
    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Default

    Gracias por la indicación Juan Pablo!
    Lamentablemente, y por falta de tiempo, tuve que solucionar el problema creando un pequeño macro. Pero voy a empesar a buscar la manera de solucionarlo con una fórmula que tenga rangos dinámicos, siguiendo tus consejos. Soy de la idea de que es mejor solucionar los problemas con fórmulas que con Macros ya que es más práctico.
    Voy a poner de todas maneras el macro por si a alguien le interesa:

    For Contador = PrimerMov - 1 To UltimoMov
    Celda1 = Worksheets(1).Cells(Contador, 4)
    Celda2 = Worksheets(1).Cells(Contador + 1, 4)
    Rut1 = Worksheets(1).Cells(Contador, 2)
    Rut2 = Worksheets(1).Cells(Contador + 1, 2)
    If Rut1 = Rut Or Rut2 = Rut Then
    If Rut2 = Rut1 Then
    If Celda2 <> Celda1 Then
    Real = Real + 1
    End If
    Else
    If Celda2 <> Celda1 Then
    Real = Real + 0.5
    End If
    End If
    End If
    Next Contador
    Cells(Origen1x + 47, Origen1y + 4).Value = Int(Real + 0.5)

    Las Celdas "Celdax" contienen el número de factura y "Rutx" la identificación del Cliente
    "PrimerMov" y "UltimoMov" es el rango donde se encuentran las facturas a buscar para contarlas.
    chau!

Some videos you may like

User Tag List

Like this thread? Share it with others

Like this thread? Share it with others

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •