Dudas en VBA

Quiero saber cual es el conector para que 2 condiciones que tienen el mismo resultado se ejecuten al mismo tiempo. Te explico mejor tengo 2 columnas en excel en una están unos datos y la otra esta vacía yo quiero que en la columna vacía se cargue automáticamente un % si en la columna de datos hay 1 y 2 por ejemplo. Te aclaro que en la columna de datos los números varían y yo soy la que voy a poner las restricciones como por ejemplo si la columna datos tiene 1 y 2 colocar en columna vacía 140% en la celda correspondiente de cada una en la columna vacía

5 Respuestas

Respuesta
1
Creo que lo que necesitas es el operador OR.
La macro que he construido busca en las 100 primeras celdas de la columna A y comprueba su valor. Si el valor de la celda es 1 ó 2 escribe en la columna B 140%, en caso contrario pone la celda en blanco.
Sub Opciones()
Dim Celda As Range
For Each Celda In Range("A1:A100")
If Celda.Value = 1 Or Celda.Value = 2 Then Celda.Offset(0, 1).Value = 1.4 Else Celda.Offset(0, 1).Value = ""
Celda.Offset(0, 1).NumberFormat = "0%"
Next Celda
End Sub
De todas formas no estoy segur de haber comprendido bien la pregunta. Si no es esto lo que buscas o necesitas alguna aclaración, no dudes en continuar la pregunta.
Respuesta
1
Según entiendo, lo que quieres es que por ejemplo, si la celda A1 tiene un 1 o un 2, el valor se aumente en un 40%.
Para evaluar más de una condición, puedes utilizar la función O, la cual devuelve verdadero si alguno de los argumentos es verdadero, por lo tanto, en combinación con la función SI, podrías utilizar la siguiente fórmula :
=SI(O(A1=1;A1=2);A1*1,4;0)
Esta fórmula implica que si el valor de A1 es 1 o 2, éste se amplificará por 1.4, en cambio, si el valor es distinto de 1 o 2, se pondrá el valor cero.
Captastes más o menos mi idea porque yo no quiero que se amplifique solo quiero que coloque 140%, además la condición la quiero aplicar es en VBA
Ahora si, la pregunta era menos complicada de lo que había entendido.
La siguiente macro recorre las diez primeras celdas de la columna A de la Hoja 2 y pone en la columna B el valor 140% si la celda de la columna A contiene un 1 o un 2 :
Sub codigo()
For i = 1 To 10
If Sheets(2).Cells(i, 1) = 1 Or Sheets(2).Cells(i, 1) = 2 Then
Sheets(2).Cells(i, 2).NumberFormat = "0,00%"
Sheets(2).Cells(i, 2) = 1.4
End If
Next
End Sub
El operador Or se utiliza para unir las comparaciones, la lógica que se aplica es la misma que la que te expliqué para la función O.
Esto si es lo que quiero excepto que no quiero que coloque cero en las otras celdas si no otro valor es decir otro % para otra condición si es 3,4,5 y 6 el % debe ser 130% y así para otros valores y que recorra toda la columna y no solo los 10 primeros números
Si suponemos que sólo habrán valores entre 1 y 6 y que los datos comienzan en la celda A1, la macro se podría modificar de la siguiente forma:
Sub codigo()
final = Sheets(2).Range("A1").End(xlDown).Row
For i = 1 To final
If Sheets(2).Cells(i, 1) = 1 Or Sheets(2).Cells(i, 1) = 2 Then
Sheets(2).Cells(i, 2).NumberFormat = "0,00%"
Sheets(2).Cells(i, 2) = 1.4
Else
Sheets(2).Cells(i, 2).NumberFormat = "0,00%"
Sheets(2).Cells(i, 2) = 1.3
End If
Next
End Sub
Si los datos no empezaran en la fila 1, si no que, por ejemplo, empezaran en la fila tres, debes modificar la siguiente línea del código:
final = Sheets(2).Range("A1").End(xlDown).Row
por
final = Sheets(2).Range("A3").End(xlDown).Row
Espero que esto te sirva, te recomiendo visitar mi sitio web www.excelworker.virtuabyte.cl sobre la programación de macros.
Respuesta
1
Tienes dos formas de hacerlo:
Mediante código VBA y mediante la fórmula Buscarv.
Te he prepara un fichero con los dos ejemplos, si me envías tu mail te lo remito.
mi correo es [email protected]
Te agradecería que si ter sirvió el fichero me calificaras la respuesta
Respuesta
1
Si te entendí bien, quieres que la columna vacía se cargue de acuerdo a las condiciones que tu le pongas.
Por ejemplo si pones 1 que se ponga 100%. Si las cosas son así, debes usar la función =si()
Celda a1, contiene 1
celda b1, =SI(A1=1,100%,0%)
Te explico como funciona, si la celda a1 es igual a 1, entonces se pondrá 100%, sino es así se pondrá 0%.
Ademas de ello, debes poner el formato de la celda b1 como poncentaje para que se muestre bien. Suerte
Respuesta
Te serviría si usas un "IF" o un "Buscar".?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas