Saltar al contenido

Utilización de funcion contar.si en macro


Recommended Posts

publicado

Hola...

Me seria de gran ayuda alguien que me pueda ayudar con esta pequeña duda...

tengo dos hojas de Excel, "concentrado" y "actual". en concentrado tomo el primer valor y busco las veces que se repite en actual.

Inserto una columna y con la función contar.si me regresa las veces que se repite el dato buscado, es decir, me regresa un 1 en la celda y hasta que encuentra el segundo numero repetido me regresa un 2.

Mi duda esta en como puedo expresar esta función en una macro para ir buscando los datos de uno por uno:

=contar.si($E$1:E9, Concentrado!$A$4), "E9" es una variable que se estaría incrementando para ampliar el rango.

Muchas gracias de verdad....

Saludos...

publicado
Hola...

Me seria de gran ayuda alguien que me pueda ayudar con esta pequeña duda...

tengo dos hojas de Excel, "concentrado" y "actual". en concentrado tomo el primer valor y busco las veces que se repite en actual.

Inserto una columna y con la función contar.si me regresa las veces que se repite el dato buscado, es decir, me regresa un 1 en la celda y hasta que encuentra el segundo numero repetido me regresa un 2.

Mi duda esta en como puedo expresar esta función en una macro para ir buscando los datos de uno por uno:

=contar.si($E$1:E9, Concentrado!$A$4), "E9" es una variable que se estaría incrementando para ampliar el rango.

Muchas gracias de verdad....

Saludos...

Hola

Porfavor lee las normas del foro y su funcionamiento

Normas y Reglas del Foro | Ayuda Excel

Saludos

publicado
Buenas tardes....

Mis disculpas, aquí esta el archivo de ejemplo, lo que no se es como expresar esa formula en una macro....

Saludos....

Hola

Prueba con:

Sub ContarSi_GP()

Range("E2", Range("E2").End(xlDown)).Offset(, -4) _
.Formula = "=COUNTIF($E$2:E2, Concentrado!$A$1)"

End Sub[/PHP]

Saludos

publicado

Hola Gerson muchas gracias por tu respuesta.

Funciono muy bien. Me podrás ayudar con un ultimo detalle...

Al querer adaptar lo que me propusiste la verdad me confundí un poco.

Lo que trato de hacer es lo siguiente:

Cuando la función contar.si encuentra cuando se repite el primer numero de concentrado en actual, el cual estaría referenciado por el numero 2, escribiría en concentrado los datos que le corresponden a ese numero y así sucesivamente para los demás números de concentrado, te adjunto archivo para darte mejor la idea.

Ojala me puedas ayudar con esto amigo...

Saludos...

Libro1.xls

publicado

Hola

Pruebas asi

Sub ContarSi_GP()

Range("E2", Range("E2").End(xlDown)).Offset(, -4) _
.Formula = "=COUNTIF($E$2:E2, Concentrado!$A1)"

End Sub[/PHP]

Observas la diferencia?

Saludos

publicado

Hola Gerson...

Antes que nada feliz año nuevo....

Lo que busco lograr es lo siguiente.

Tomo el primer dato de concentrado y lo busco en actual mediante la función contar.si (cuando esta me da el numero 2) tomo los valores que se encuentran sobre la fila en la que se repitió el numero y los escribo en concentrado.

Esta función que me propones primero si lo logra

Sub ContarSi_GP()

Range("E2", Range("E2").End(xlDown)).Offset(, -4) _.Formula = "=COUNTIF($E$2:E2, Concentrado!$A$1)"

End Sub

Esto lo quiero lograr con una macro solo que al momento de querer tomar el segundo dato de concentrado me confundí en como ir incrementando el rango de celda en este caso "E2" y "A1".

Te adjunto comentarios en archivo...

Disculpa la molestia y gracias de antemano por tu ayuda.

Libro1.xls

publicado
Hola Gerson...

Antes que nada feliz año nuevo....

Lo que busco lograr es lo siguiente.

Tomo el primer dato de concentrado y lo busco en actual mediante la función contar.si (cuando esta me da el numero 2) tomo los valores que se encuentran sobre la fila en la que se repitió el numero y los escribo en concentrado.

Esta función que me propones primero si lo logra

Sub ContarSi_GP()

Range("E2", Range("E2").End(xlDown)).Offset(, -4) _.Formula = "=COUNTIF($E$2:E2, Concentrado!$A$1)"

End Sub

Esto lo quiero lograr con una macro solo que al momento de querer tomar el segundo dato de concentrado me confundí en como ir incrementando el rango de celda en este caso "E2" y "A1".

Te adjunto comentarios en archivo...

Disculpa la molestia y gracias de antemano por tu ayuda.

Hola

Como vemos nada que ver tus comentarios a lo que explicas y detallas en el archivo, ves como las normas del foro estan hechas por expertos!

En el caso que se repita mas de dos veces cada criterio, que hacer?

Saludos

publicado
Hola

Como vemos nada que ver tus comentarios a lo que explicas y detallas en el archivo, ves como las normas del foro estan hechas por expertos!

En el caso que se repita mas de dos veces cada criterio, que hacer?

Saludos

Mis disculpas tal ves no me explique bien, de igual manera muchas gracias por tu ayuda....

saludos...

Si deseas que te ayude, responde mi duda?

Saludos

publicado

No entiendo tu duda....

¿La pregunta que me haces va encaminada a si se repite dos veces el mismo criterio en concentrado?

si es así, lo eliminaría en concentrado el dato repetido...

saludos...

publicado
No entiendo tu duda....

¿La pregunta que me haces va encaminada a si se repite dos veces el mismo criterio en concentrado?

si es así, lo eliminaría en concentrado el dato repetido...

saludos...

La duda es si se repite 3 veces o mas un criterio, que se hace se copia o no?

Saludos

publicado

Solo buscaría que se repita hasta la segunda ves.

voy a tratar de explícame mejor:

1 . tomo A1 de concentrado

2. reviso hasta cuando se repite en Actual que estaría definido por el numero 2 que arroja la función contar.si

3. lo encuentra y regresa los datos de las columnas F y G pero se escriben en concentrado.

4. se toma A2 de concentrado y se repite el ciclo y así sucesivamente hasta terminar los datos existentes en concentrado.

Ojala me haya explicado mejor...

Gracias de nuevo y disculpa.

publicado

Hola lcastillo:

Veo que aún no solucionas tu problema. Me podiras explicar otro punto mas por favor, que pasaria si los datos de concentrado no se repiten en Hoja actual. Es decir por ejemplo, en concentrado tengo 222 y en actual 222 pero no se repiten, que dato debo tomar ahi?

Pongo imagen para la pregunta.

2f0c8jn.jpg

publicado
Solo buscaría que se repita hasta la segunda ves.

voy a tratar de explícame mejor:

1 . tomo A1 de concentrado

2. reviso hasta cuando se repite en Actual que estaría definido por el numero 2 que arroja la función contar.si

3. lo encuentra y regresa los datos de las columnas F y G pero se escriben en concentrado.

4. se toma A2 de concentrado y se repite el ciclo y así sucesivamente hasta terminar los datos existentes en concentrado.

Ojala me haya explicado mejor...

Gracias de nuevo y disculpa.

Hola

Ahora queda mas claro, revisa el adjunto (a puras formulas), espero sea eso lo que necesitas

Saludos a ambos!

Contarsi y obtener datos de otra hoja_GP.rar

publicado

Hola elunico22 tienes razón en tu observación si no se repite se toman los datos del primer valor de actual.

Gracias Gerson lo reviso y comento...

saludos...

  • 2 weeks later...
publicado
Hola amigos...

Gerson muchas gracias por tu propuesta, les adjunto de nuevo el archivo con el código que trato de realizar.... donde no se como adaptarlo es en la función contar.si...

Saludos....

Hola

Disculpa pero se ma habia pasado por alto tu tema, prueba con lo siguiente

Sub ContarSi_GP()
'By Gerson Pineda
With Range("B1")
.FormulaArray = "=IF(COUNTIF(Actual!$E:$E,$A1)>=2,iNDEX(Actual!$F$1:$H$14,SMALL(IF(Actual!$E$2:$E$14=$A1,ROW(Actual!$E$2:$E$14)),2),COLUMNS($A$1:A1)),"""")"
.AutoFill .Resize(, 3), xlFillDefault
End With
Set rango = Range("A1", Range("A1").End(xlDown)).Offset(, 1).Resize(, 3)
Range("B1:D1").AutoFill Destination:=rango, Type:=xlFillDefault
With rango: .Value = .Value: End With
Set rango = Nothing
End Sub[/CODE]

Y nos comentas

Saludos

Archivado

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

×
×
  • 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.