Saltar al contenido

Utilización de funcion contar.si en macro


Recommended Posts

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

Enlace a comentario
Compartir con otras webs

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

Enlace a comentario
Compartir con otras webs

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

Enlace a comentario
Compartir con otras webs

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

Enlace a comentario
Compartir con otras webs

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

Enlace a comentario
Compartir con otras webs

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

Enlace a comentario
Compartir con otras webs

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

Enlace a comentario
Compartir con otras webs

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

Enlace a comentario
Compartir con otras webs

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.

Enlace a comentario
Compartir con otras webs

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

Enlace a comentario
Compartir con otras webs

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

Enlace a comentario
Compartir con otras webs

  • 2 weeks later...
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

Enlace a comentario
Compartir con otras webs

Archivado

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

  • 96 ¿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

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Archivos

  • Estadísticas de descargas

    • Archivos
      177
    • Comentarios
      90
    • Revisiones
      27

  • Crear macros Excel

  • Mensajes

    • Si  no me he liado con los paréntesis: Private Sub Worksheet_Change(ByVal Target As Range) Application.ScreenUpdating = False Application.Calculation = xlManual Application.EnableEvents = False If Not Intersect(Target, Range("$L$5:$Y$9")) Is Nothing Then Range("E22") = WorksheetFunction.Sum(Range("E4:E21")) Range("E23") = WorksheetFunction.Sum(Range("E4:E19")) Range("E24") = Range("E23") - WorksheetFunction.Sum(Range("I4:I7")) Range("I22") = WorksheetFunction.Sum(Range("I4:I21")) Range("I4") = Range("E23") * 0.1 Range("I5") = Range("EN10") * Range("EN11") Range("I6") = Range("E23") * 0.0127 Range("I7") = Range("E23") * 0.006 Range("I25") = Range("E22") - Range("I22") Range("I12") = Range("E24") * 0.03 Range("C7") = Range("EQ8") - Range("EQ9") + Range("EN13") + Range("EN14") + Range("EN15") + Range("EN16") Range("C9") = Range("EQ9") + Range("EN17") + Range("EN18") + Range("EN19") Range("E7") = Range("E4") / Range("C4") * 7 / 44 * 1.5 * Range("C7") Range("E8") = Range("E4") / Range("C4") * 7 / 44 * 0.3 * Range("C8") Range("E9") = Range("E4") / Range("C4") * 7 / 44 * 1.3 * 1.5 * Range("C9") End If Application.Calculation = xlAutomatic Application.ScreenUpdating = True Application.EnableEvents = True End Sub  
    • Hola de nuevo a ambos, @daren, tu archivo lleva excesivos datos, que creo no son necesarios para la información final que buscas. Te subo otro archivo, simplificado al máximo, que, si lo he entendido bien, con esta fórmula simplificada: =CONTAR.SI('Casos de Prueba'!I:I;"OK")*('Casos de Prueba'!I1="Resultados Ciclo "&COLUMNA(A5)) se calcularía el primer dato, que se encuentra en la columna I. Copiando la fórmula a la derecha las celdas que necesites, se completaría el rango.  Tu fórmula la coloco en D7, y esta nueva en D9, que como ves (si, repito, he interpretado bien lo que buscas), da los mismos resultados. ---------------------------------------------------------------- En cuanto a: Aquí tienes, en el mismo archivo (Hoja 3) lo que devuelve tu fórmula cuando hay un determinado dato en A1 y en B2. No llego a entender qué es lo que quieres exactamente.  Tal vez con una pequeña explicación de lo que esperas obtener, sea suficiente para poner el hilo a la aguja. ? ----------------------------------------------------------------- En el caso de que falte por añadir o evaluar alguna otra variable o parámetro (en tu primer post hablabas sólo de 'OK' y ahora veo que en el archivo figuran además 'KO' y 'BLOCK'), por favor, intenta emular el ejemplo del archivo que estoy subiendo; añade EXCLUSIVAMENTE esos datos en la hoja allá donde proceda, explicando dónde o cómo deben contarse o sumarse. Mejor trabajar siempre con datos anónimos y reducidos. Desconozco si en tu archivo alguno de esos datos puede considerarse confidencial, pero seguro que no interesan a nadie. Mucho mejor obviarlos. Saludos, Plantilla V3 (B).xlsx
    • buenas noches, quisiera saber si puedo mejorar mi macros que se encuentra en el evento change de la hoja de calculo de Excel, son códigos de cálculos básicos, además si me pudieran ayudar a reducir el código o darme algún tip para reducirlo yo mismo estaría muy agradecido.  de ante mano muchas gracias     Private Sub Worksheet_Change(ByVal Target As Range)     Application.ScreenUpdating = False     Application.Calculation = xlManual     Application.EnableEvents = False              If Not Intersect(Target, Range("$L$5:$Y$9")) Is Nothing Then             Sub todo()          Range("E22") = WorksheetFunction.Sum(Range("E4:E21"))     Range("E23") = WorksheetFunction.Sum(Range("E4:E19"))     Range("E24") = WorksheetFunction.Sum(Range("E23") - WorksheetFunction.Sum(Range("I4:I7")))     Range("i22") = WorksheetFunction.Sum(Range("I4:I21"))     Range("I4") = Range("E23") * 0.1     Range("I6") = Range("E23") * 0.0127     Range("I5") = Range("EN10") * Range("EN11")     Range("I7") = Range("E23") * 0.006     Range("I25") = Range("E22") - Range("I22")     Range("I12") = Range("E24") * 0.03     Range("C7") = WorksheetFunction.Sum(Range("EQ8") - (Range("EQ9"))) + Range("EN13") + Range("EN14") + Range("EN15") + Range("EN16")     'Range("E7") = WorksheetFunction.Sum(Range("C7") * ((Range("E4") * 0.0077777)))     Range("C9") = Range("EQ9") + Range("EN17") + Range("EN18") + Range("EN19")     'Range("E9") = WorksheetFunction.Sum(((((Range("E4") / Range("C4")) * 7) / 45) * 1.3) * 1.5) * Range("C9")     'Range("E8") = WorksheetFunction.Sum(((((Range("E4") / Range("C4")) * 7) / 45) * 0.3)) * (Range("C8"))     Range("E9") = WorksheetFunction.Sum(((((Range("E4") / Range("C4")) * 7) / 44) * 1.3) * 1.5) * Range("C9")     Range("E8") = WorksheetFunction.Sum(((((Range("E4") / Range("C4")) * 7) / 44) * 0.3)) * (Range("C8"))     Range("E7") = WorksheetFunction.Sum((((Range("E4") / Range("C4")) * 7) / 44) * 1.5) * Range("C7")          End Sub              End If                  Application.Calculation = xlAutomatic     Application.ScreenUpdating = True     Application.EnableEvents = True     End Sub
    • Buenas perdonad la espera adjunto el fichero Excel y explico mas detallado lo que me solicitan: Lo que me solicitan es que esos CP de la pestaña Casos de prueba los cuales tienen formulas para que cuando se copien y peguen junto a sus pasos el CP se va autoincrementando a 1,2,3 etc...., pero si copias ese CP bien solo con el primer paso o con todos sus  pasos y lo insertas entre dos CP no continua con la numeración, como se ve en la foto al hacer eso el CP insertado continua con la numeración CP2 y el de abajo pone también CP2 no se incrementa ni ese ni el valor de CU que hay a la derecha que también es incremental. Necesitaría que continuara con esa numeración aun insertándolo entre medio de 2 tanto el CP como el CU de la derecha. También me solicitan que el campo Ciclo 1 de la pestaña Resumen es auto incremental cuando copias y pegas va sumando 1, pero en las formulas referentes a Ok KO Y bloqueo al copiar y pegar se mantiene la misma formula , la idea es que cuando copies y pegues la fila donde están los ciclos se autoincremente Ciclo a 1,2,3,4 etc... y la formula de los campos OK,KO y Bloqueos se incremente también pasando de la columna I a la J  luego a la k etc... y que en Resultados Ciclo el numero de la formula también se incremente Resultados Ciclo 1 , 2 ,3 etc... que cambie la columna a la vez que el numero de Resultados Ciclo. Gracias por adelantado un saludo. Plantilla v3 Pruebas.xlsx  
    • Saludos amigos espero estén bien Estoy intentando hacer un formulario que me convierta unidades de masa sin embargo  en el mejor de los casos solo he podido lograr la conversión de una unidad a la vez en los TextBox 1, 3, 5, 7, 9, 11 y 13 y cuando lo logro el resultado que se copia  en la celda no se corresponde con el obtenido originalmente en el Textbox del Formulario (frmconv)  ejemplo al convertir 1900 Kg a Lb el resultado en el TextBox1 =4188,78298142 sin embargo al guardar el resultado lo que se copia en la Celda  "F11" es  418.878.298.142,00, adicionalmente el resultado de la conversión no se visualiza inmediatamente por lo que debo de hacer click en los TextBox 1, 3, 5, 7, 9, 11 y 13  para ver el resultado. Mucho les sabre agradecer la ayuda que me puedan brindar. PRUEBA.xlsm
  • 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.