Excel - Condición de acuerdo al contenido de celdas

 
Vista:

Condición de acuerdo al contenido de celdas

Publicado por Rodrigo (15 intervenciones) el 13/07/2006 18:02:08
Tengo una macro que me imprime ciertos palabras en excel de acuerdo al OptionButton que se escoja en un formulario. Mi problema es que necesito evitar que en dos columnas contiguas se imprima la misma palabra, por ejemplo:

A B

1 MOLDEO OXIDACION

2 MOLDEO REDUCCION

3 MOLDEO MOLDEO

4 MOLDEO MOLDEO

En este caso en la columna B, a contar de la fila 3, se empieza a imprimir la palabra MOLDEO. Eso es lo que actualmente hace la macro, pero lo que necesito es que cuando de REDUCCION vaya a pasar a MOLDEO (en la columna B) se detecte que en la columna A ya está la palabra MOLDEO y que en vez de esa palabra, imprima EN ESPERA hasta que en la culumna A se deje de imprimir la palabra MOLDEO. Para lograr esto hice el siguiente código, el cual no me ha dado resultado ya que me sigue imprimiendo palabras iguales en ambas columnas:

For j = 3 To 3 + caran
If Cells([j], [2]).Select = "En Carguio" Then
Cells([j], [1]).Select
ActiveCell.FormulaR1C1 = "En Espera"
Else
Cells([j], [4]).Select
ActiveCell.FormulaR1C1 = "En Carguio"
End If
Next j

Espero haberlo explicado claro, la verdad es que me complicó bastante graficar la situación. Ojalá puedan ayudarme, de antemano, muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Abraham Valencia
Val: 313
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

RE:Condición de acuerdo al contenido de celdas

Publicado por Abraham Valencia (2415 intervenciones) el 13/07/2006 18:43:17
Y si cambias

If Cells([j], [2]).Select = "En Carguio" Then

Por

If Cells([j], [2]).value = "En Carguio" Then

Abraham

PD: no lo he intentado, pero puede ser el problema
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Condición de acuerdo al contenido de celdas

Publicado por Rodrigo (15 intervenciones) el 13/07/2006 20:32:21
Cambié

If Cells([j], [2]).Select = "En Carguio" Then

por

If Cells([j], [2]).value = "En Carguio" Then

pero me sigue imprimiendo palabras iguales en ambas columnas y en ocasiones (dependiendo de las opciones que se elijan en los OptionButton) el sistema se cae y me marca en amarillo la linea de codigo del IF.
¿de qué otra forma podria darle solución?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Condición de acuerdo al contenido de celdas

Publicado por Jose Luis (18 intervenciones) el 14/07/2006 14:15:09
Lo indicado por Abraham es correcto, no obstante creo que estás evaluando el contenido de una celda equivocada.
Salvo error mío, la sintaxsis sería, Cells(Fila,Columna), por tanto, si comienzas en la fila 3 (For j = 3 To 3 + caran), tendrías
If Cells([3], [2]).Value = "En Carguio" Then
Cells([3], [1]).Select
ActiveCell.FormulaR1C1 = "En Espera"
Else
Cells([3], [4]).Select
ActiveCell.FormulaR1C1 = "En Carguio"
End If
estás evaluando el contenido de la celda B3, cuando debería ser el de la A3.

Creo que debería ser de esta forma
If Cells([3], [1]).Value = "MOLDEO" Then
Cells([3], [2]).Select
ActiveCell.FormulaR1C1 = "EN ESPERA"
Else
'esta parte no la entiendo ...
Cells([3], [4]).Select
ActiveCell.FormulaR1C1 = "En Carguio"
End If

¿en función de qué cambia el contenido de la celda B3?
¿qué sigue a REDUCCION?

No sé cual es el funcionamiento del programa (lineal, cíclico, esperas para evalular variables, etc) pero parece ser que deberías usar un bucle While para evaluar el contenido de la celda A3 y B3.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Condición de acuerdo al contenido de celdas

Publicado por Rodrigo (15 intervenciones) el 14/07/2006 15:39:51
Si, tienes razón, hay un error en una de las lineas (Cells([3], [4]).Select ). Lo que pasa es que modifiqué algo el código para el ejemplo que puse en el foro, pero lo que pretendo hacer es lo siguiente: Preguntar si una fila determinada de la columna B contiene la misma palabra que hay en la misma fila pero de la columna A (o viceversa); si es así, que cambie la palabra de la columna B por EN ESPERA, si no es así, que mantenga la palabra que tenia originalmente. Las palabras que se van imprimiendo en las celdas se determinan por el OptionButton que escoge el usuario. Las opciones que tiene el usuario con los OptionButton, tanto en la columna A como en la B son: Carguío, Oxidación, Reducción y Moldeo, por lo tanto y de acuerdo al funcionamiento de la macro, si el usuario elige en la columna A "Carguío", se imprimirá en la planilla excel 7 veces la palabra Carguio, 3 de oxidación, 3 reducción y 10 de Moldeo; si en la columna B el usuario escoge Oxidacion se imprimira: 3 veces Oxidacion, 3 reducción y 10 de Moldeo. Con esto, las 3 primeras palabras "Moldeo" de la columna A coincidiran con las 3 ultimas palabras "Moldeo" de la columna B. Es ahí donde no he podido hacer una condición que logre identificar esa situacion y me imprima EN ESPERA (en la columna A) mientras termina el proceso de "Moldeo" de la columna B, para que una vez finalizado el proceso de Moldeo de la columna B, recien se comience a imprimir la palabra Moldeo en la columna A.

Se que parece algo complejo, pero ya estoy algo desesperado con esto jejeje. Llevo días intentando cosas y no me ha resultado nada. Les agradezco mucho sus comentarios.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar