Combinar funciones en una misma celda

Te molesto con otra pregunta que seguramente tiene una sencilla solución y no he logrado encontrar luego de muchas pruebas.
Tengo que usar 3 celdas al mismo tiempo, supongamos A1, B1 y C1. El rango A tiene datos que voy cargando manualmente excepto si C1 es 9,50. La celda B varia siempre en función de la C.
entonces  tengo la siguiente funcion combinada en B1:  =SI(C1=126;"100%";"")&SI(C1=9,50;"70%")& etc...
Ahora bien, como en A no puedo colocar ninguna funcion pq van variando los datos en todos los casos, quiero insertar en la funcion de B1 q al momento q C1 sea 9,50 en la celda A vuelque "Movilidad", algo asi: SI(C1=9,50;"70%" +(A1="Movilidad");"")
Con ese planteo me da error, el conector obviamente no es +, ¿Cómo seria la fórmula correcta?

1 Respuesta

Respuesta
1
Esto no lo podes hacer con fórmulas; tendrás que usar el evento Change de la Hoja (o Calculate). Si tenés dudas avisame que te digo como deberías hacerlo.
ops, es más complicado de lo que pensaba entonces, te agrego como dato, que los datos de C1 no son el resultado de un calculo, sino datos manuales también.
Ahora si me puedes decir como usar change o calculate, porque no tengo idea
Saludos
Ok, si el ingreso es manual te conviene usar el evento Change; sobre la Solapa de la Hoja haz click con el botón derecho del mouse y selecciona "Ver Código"
Allí ingresa lo que sigue
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$1" Then
   If Target.Value = 9.5 Then Range("A1") = "Movilidad"
End If
End Sub
Perfecto, pero con otra cuestión, si cambio el valor 9,5 por otro valor, no desaparece la palabra "Movilidad", por eso trataba de hacerlo con un IF puesto que puedo variarlo varias veces hasta que la planilla quede conformada, es necesario que quede en blanco si el valor es otro
Segunda cuestión: ahora que me has resuelto para un rango, necesito que sean varios targets y varios address, ¿cómo se los voy agregando? ¿Separados con coma o...?
Te cambio parcialmente la función
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$1" Then
  If Target.Value = 9.5 Then
        Range("A1") = "Movilidad"
  Else
        Range("A1") = ""
  End If
End If
End Sub
Saludos
Gfellay
Respecto a tu segunda pregunta, si son "demasiados" lo podemos hacer con otra cosa (poniéndole un nombre al rango en cuestión); si son pocos, podría ser algo más o menos
If Target.Address = "$C$1" Or Target.Address = "$D$1" Or ... Then
Eso funciono perfecto, y con respecto a los rangos si son muchos, son 31 filas no continuas, serian la C, F, I, etc, hasta la CP (siempre con 2 columnas al medio) y de la fila 1 a la 110, las filas si son corridas
Si mantienen una lógica (por lo que estás diciendo si lo tienen), podrías hacerlo más fácil; en lugar de utilizar Address, podes usar Row (para ver que la fila sea entre la 1 y la 110) y Column (evaluando, según lo que planteás, que sea divisible por 3); te quedaría algo más o menos así
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row <= 110 And (Target.Column Mod 3 = 0) Then
 If Target.Value = 9.5 Then
    Range("A1") = "Movilidad" 
  Else
    Range("A1") = ""
  End If
End If
End Sub
Ya me siento mal por usar tanto de tu tiempo, en realidad las celdas van variando por ej, la C1 me varia la A1, la F1 me varia la D1 y así sucesivamente hasta que la CP110 va a variar la CN110. No lo había especificado porque supuse que seria una cuestión de "copiar y pegar" una vez que resolviera lo de la primer fila.
Ya no te preocupes, voy a hacerlo de la forma "larga" y de todas maneras lo haré una vez y listo, ya eso me resuelve días de trabajo.
Te agradezco muchísimo y espero que seas consciente de lo valioso que es tu trabajo aquí, como el de todos los expertos que lo hacen de manera desinteresada.
Millón de gracias y saludos,

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas