Saltar al contenido

Problema con macro contar coincidencias


eugeniocol

Recommended Posts

publicado

Buenas de Nuevo.

Tengo esta macro hecha por mí con grabadora (no doy más de sí) trabaja con esta formula

=SUMA(N(MMULT(N(CONTAR.SI(DESREF(C$5:H$5;FILA(C$5:C$10000)-FILA(C$5););$L1:$Q1)>0);{1;1;1;1;1;1})=4))


Para contar coincidencias de 2, 3, 4, 5,6 números de las familias en de valores de L: CL con ? H
El rango real es mínimo en L: CL es de 150.000 claro cada grupo tarda +- 50 minutos, habría otra macro que fuese mucho más rápida ¿?

Ahora tengo otra sorpresa que acabo de ver y esta fórmula la daba por buena y es que veo que no hace la función que yo pensaba.

Ejemplo:
EN L:R SEGUNDA FILA DEBERIA
SER EN R 1 COINCIDENCIA DE 4
NUMEROS CON FILA 5 DE C:H

Subo Libro.

Salud2....

Foro CONTAR COINCIDENCIAS_2.xlsmFetching info...

publicado

amigo @eugeniocol intente ayudar, pero de verdad que no entiendo realmente que es lo que hace, por favor explica mejor exactamente que buscas y coloca los resultados de una par de ejemplo.

en lo que describes, los dos rangos que dices (están en verde) yo veo que coinciden 6 números y no 4 como comentas, entonces  no entiendo

suerte

publicado

A ver ahora.

Mira Hoja 2

Formula en R

  Cita
=SUMA(N(MMULT(N(CONTAR.SI(DESREF(A$5:F$5;FILA(A$5:A$10000)-FILA(A$5););$L1:$Q1)>0);{1;1;1;1;1;1})=4))
Expand  

L: R en fila 2 busca contar cuatro coincidencias con C: H encontrando las coincidencias en fila 5 y 8, resultado en R2 =2

L: R en fila 5 busca contar cuatro coincidencias con C: H encontrando las coincidencias en fila 7, pero……. resultado en R2 =0 ¿???

Sé que si pongo en })=4)) esto })=5)) pues cuenta 1, pero como busco contar 4 coincidencias ¿??
 

Y la segunda parte es buscar mayor rapidea a esta macro con grabadora.

Y en Hoja 1.

Formulas visibles en R y Z

Plantilla original con la macro por grabadora, que tomo la fórmula en color amarillo como referencia para correrla a mano y después copio pego a valores para que el libro sea menos pesado al abrirlo de nuevo.

Son 150.000 mínimo filas x 10 bloques.

Y como ya comente al ejecutar la macro de grabadora por bloque 50 minutos y a mano bloque a bloque puf……..

Espero que se entienda ahora.

Subo Libro.

Un Saludo.

 

 

 

 

Foro CONTAR COINCIDENCIAS_2.xlsmFetching info...

publicado
  En 20/8/2019 at 22:45 , bigpetroman dijo:

amigo @eugeniocol revisa el anexo, yo duplique los bloques hasta 10 filas y lo realizo en 30 segundo mas o menos

cualquier problema subes un archivo con mas datos unas 100 lineas, que den diferentes resultados y así hacer mas pruebas

 

Foro CONTAR COINCIDENCIAS_2.xlsm 27 kB · 4 descargas

Expand  

En el libro este ejemplo 1º parece ok, pero..... lo paso al libro mas real y no va.

Veras que en Hoja1 las columnas a rellenar en Naranja la dejo en blanco , le das al boton donde pone tu nombre y lo veras.

El libro pesa un poco lo tengo que poner en este enlace

https://www.dropbox.com/s/m8ews9s73tn5fgh/CONTAR%20COINCIDENCIA%20PLANTILLA%20ORIGINAL.rar?dl=0

Salud2....

 

  • Gerson Pineda changed the title to Problema con macro contar coincidencias
publicado

Saludos amigo @eugeniocol realmente es complicado todo este proceso son muchos registros a procesar, cualquier solucion va a tardar bastante, realice algunas pruebas y la mejor estimacion es que tarde alrededor de 17 minutos por tabla. tienes que procesar 7 mil filas 150 mil veces cada una (1.050.000.000 de evaluaciones x tabla), no se, suponiendo que el equipo tarje una millonesima de segundo en cada evaluacion, serian 1050 segundo, que serian 17 minutos mas o menos.

tambien intente realizando un filtrado para dejar solo los posibles candidatos (donde el menor numero de la fila a evaluar, iniciara como maximo en el tercer campo del registro evaluado), con esto se pudiera recudir considerablemente los candidatos en cada una de las evaluaciones, en vez de evaluar 150 mil registros, tal vez solo se evaluan 56000 o mas o menos; al final eso también lograria reducir el tiempo total.

bueno, al final no termine nada, solo haciendo pruebas, si tengo tiempo en estos dias lo reviso nuevamente, sino, esperemos a ver si alguien mas tiene una mejor idea, suerte

publicado
  En 22/8/2019 at 13:35 , bigpetroman dijo:

Saludos amigo @eugeniocol realmente es complicado todo este proceso son muchos registros a procesar, cualquier solucion va a tardar bastante, realice algunas pruebas y la mejor estimacion es que tarde alrededor de 17 minutos por tabla. tienes que procesar 7 mil filas 150 mil veces cada una (1.050.000.000 de evaluaciones x tabla), no se, suponiendo que el equipo tarje una millonesima de segundo en cada evaluacion, serian 1050 segundo, que serian 17 minutos mas o menos.

tambien intente realizando un filtrado para dejar solo los posibles candidatos (donde el menor numero de la fila a evaluar, iniciara como maximo en el tercer campo del registro evaluado), con esto se pudiera recudir considerablemente los candidatos en cada una de las evaluaciones, en vez de evaluar 150 mil registros, tal vez solo se evaluan 56000 o mas o menos; al final eso también lograria reducir el tiempo total.

bueno, al final no termine nada, solo haciendo pruebas, si tengo tiempo en estos dias lo reviso nuevamente, sino, esperemos a ver si alguien mas tiene una mejor idea, suerte

Expand  

Y una macro para solo el booque L:R hasta fila 700.000 ??? que pueda acoplarse para contar coincidencias 3,4 y 5, pero individualmente no que cuente a la vez 3,4 y 5.

Salud2....

  • 3 weeks later...
publicado

Saludos amigo,  lo mejor que logre hacer está en el archivo anexo, le elimine muchas filas para poder subirlo, simplemente completa los datos de las columna A:F (los 6 mil y algo de datos a comparar) y de la K:P (En esta van los 750 mil registros).

con las pruebas que realice (hasta 10 mil registros en K:P), la mejor espectativa son 107 minutos x los 750 mil registros, con esto te ahorrarias mas del 50% del tiempo, que segun tu indicas, es de mas o menos 250 minutos x los 750 mil registros; puedes hacer pruebas colocando el total de filas a procesar en la celda W2, si colocas 0 procesa todos los registros de una vez

suerte

Contar prueba Final.xlsmFetching info...

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

  • 109 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Current Donation Goals

    • Raised 0.00 EUR of 130.00 EUR target
  • Archivos

  • Estadísticas de descargas

    • Archivos
      189
    • Comentarios
      99
    • Revisiones
      29

  • Crear macros Excel

  • Mensajes

    • Hola Buenas Noches, Me podrán ayudar a resolver un problema con una planilla que tengo, les comento brevemente. Tengo un archivo que cuenta con 2 hojas, la primera se llama "Movimientos" que básicamente muestra los productos con quiebres que se presentan y la hoja "Producción" que como su nombre lo dice son las producciones de cada producto según fecha de creación. Lo que necesito es lo siguiente: Cada vez que agregue una producción en la hoja "producción", debo ingresar el código creado su cantidad y lote respetivamente, además de la fecha en que se realiza la producción, en caso que sea mayor a las 12:00 se considera PM sino AM. Lo complejo es acá en la otra hoja llamada Movimientos: Esta hoja contiene una columna que se llama "Saldo", que básicamente es la diferencia de lo producido vs el quiebre en esa fecha. Una columna llamada "Cumple", que significa que ese pedido lleva si o no el producto con quiebre. Y una columna "Se preparo", que es si el pedido se preparo o no. Lo complicado viene acá es que si la fecha de la producción que ingrese en la hoja "Produccion", se hace después de la fecha de la hoja movimientos no me debe contar esa producción para efecto de la columna Saldos, si la fecha es igual o menor si se considera y ese saldo que queda disponible se puede ocupar para futuros ingresos de pedidos. Otra conducción es que las producciones siempre se deben asignar al pedido más antiguo de ese código salvo que la fecha de entrega ya haya pasado. La columna "Cumple" es básicamente para poder generar un KPI donde me indique cuales producciones se cumplieron con el plazo y cuales No. Espero me puedan ayudar ya que tengo la siguiente formula pero no sirve ya que me toma las unidades totales y no cumple con la restricción del horario. =SUMAR.SI(Produccion!A:A; $A2; Produccion!C:C) - SUMAR.SI.CONJUNTO($E$2:$E2; $A$2:$A2; A2)) Muchas gracias. Ejemplo..xlsx
    • Hola a ambos, Prueba con: =BYROW(G5:G6;LAMBDA(x;UNIRCADENAS(" - ";1;FILTRAR(E5:E10;B5:B10=x)))) Saludos,
    • Si tienes office 365 puedes usar algo como FILTER ó TEXTJOIN y si no tienes, entonces se puede jugar con las formulas, pero no te recomiendo mucho si son muchos datos, de todas maneras te dejo una fórmula y en vba, ya tu decides cual ocupar, vale Saludos BUSCAR.xlsm
    • Buenos días mis estimados Familia ayudaexcel,  Favor quisiera solicitar su gentil soporte con lo siguiente: Necesito una formula que al buscar encuentre el valor inicial de busqueda y dea todo los resultados encontrado en una celda como ejemplo. si este producto tienes 4 cantidades esta al hacer una formula de busqueda me dea el resultado de las 4 en una celda, dejo el adjunto a espera de su gran soporte.   BUSCAR.xlsx
    • Saludos Sr @Israel Cassales espero este bien quise verificar bien su solución y que las modificaciones que hice funcionarán adecuadamente y al respecto debo decir que su aporte es excelente ya que no solo me ayudo a resolver lo que necesitada sino que también me ayudo a solventar dos cosas más por lo cual estoy muy agradecido 
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.