Funciones condicionales y fechas

¿Existe algún modo de insertar - dentro de una función condicional - una fecha en modo estático, es decir, que no se actualice cada vez que abro la planilla? Sé que es posible insertarla dentro de una macro con el comando "sendkeys" y luego los símbolos que representan a las teclas Ctrl, Mayúsculas y el punto y coma, pero me interesaría insertarla dentro de una función condicional, si esto fuera posible. Desde ya muchísimas gracias por su respuesta.

2 Respuestas

Respuesta
1
Prueba con esta fórmula
=SI(F3<>"",FECHANUMERO("29/05/2003"),"")
Cambia las comas (,) por punto y coma (;) pues la configuración regional de tu equipo y el mío es diferente.
Lo único es que esa fórmula es estática... es decir que en el ejemplo que te escribí... siempre te va a dar 29/05/2003 si F3 está vacía.
Te agradezco mucho por tu tiempo y la respuesta que me enviaste. Pero acabo de notar, luego de leerla, que en realidad no fui muy clara en mi consulta. Tengo la siguiente fórmula
=SI(F3<>"";HOY();"")pero no es la adecuada porque la fecha que resulta de la misma se actualiza y yo no deseo que ello ocurra. ¿Qué expresión - si es que existe alguna - se podría poner en lugar de "HOY()", que me pusiera automáticamente el día de la fecha pero de modo estático, es decir, de modo tal que la misma no se actualice en los días siguientes. Nuevamente, muchísimas gracias por tu paciencia.
¿Cómo vas?
Bueno me queda la duda si quieres insertarla en una fórmula en Excel o dentro de código en VBA, cre que puedo resolver las 2 dudas.
En Excel la puedes insertar dentro de comillas... algo así como
=SI("07/09/2002">A5,A5,B5)
Y en VBA si hay un pequeño problema... si la comparación la vas a hacer entre variables de VBA puedes manejar las variables de tipo date pero si vas a comparar datos de VBA con valores de celdas en Excel debes trabajar con variables tipo Long (es decir el número correspondiente a la fecha, para el ejemplo que te dí arriba ese número es el 37506)y debes convertir las fechas tomadas de excel a long con la función CLng, para asignar el valor a la variable sólo lo escribes por ejemplo
fecha=27/09/2002 si fecha es tipo date
fecha=37506 si fecha es tipo long
Espero haber resuelto tu inquietud, si así es te pido el favor de finalizar la pregunta con una valoración acorde con la calidad y oportunidad de la respuesta, de lo contrario escríbeme y te amplío la explicación.
Respuesta
1
Hay, cuando menos, dos métodos para utilizar una función condicional y aplicar una fecha fija.
Seguramente sabes que la función =HOY() en una celda. Da la fecha del sistema. Pero, como dices, esta se actualiza constantemente.
LA alternativa es usar la función =FECHA(<año>,<mes>,<dia>) dentro del condicional. Por ejemplo
=SI(<condición=Verdadero>,FECHA(2003,5,28),"")
Mostrará la fecha indicada si se cumple la condición. Sino, no mostrará nada.
Desde luego, la desventaja es que obliga a cambiar los valores de Año, mes, día dentro de la fórmula o en celdas referenciadas que contangan tales datos.
Sin embargo, tu pregunta me suena más a que quieres que la fecha del sistema se actualice si se cumple una determinada condición. Pero, si la condición no se cumple, debe quedar alguna fecha anterior.
Si este fuera el caso, tendrás que usar un segundo método que involucra alguna programación en Visual Basic.
Efectivamente, como mencionas, en un entorno de VBA podrías emular el ingreso de la fecha del sistema por el atajo de teclado Ctrl+;
Sin embargo, VBA cuenta con una función que lo hace directamente:
ActiveCell.Value = Date
Esta simple instrucción deja en la celda activa la fecha del sistema.
Falta, entonces incluirla dentro de un condicional, para que cumplida la condición, la fecha se actualice con la que tenga el sistema y, por último, identificar un evento que dispare automáticamente la ejecución de tal macro.
Entonces, activa el editor de Visual Basic (presiona Alt+F11) y busca la hoja donde quieres que esto ocurra (donde harás la carga de datos). Da doble click sobre ella. (Otra forma de llegar a este punto es hacer click derecho sobre la solapa de esta hoja y elegir la opción "Ver Código)
Copia el código siguiente y pégalo en el panel desplegado a la derecha de su Editor de Visual Basic:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'Ingresa aquí la columna que debe modificarse para que se
'evalue la condición
ColMod = "B"
'-----------
ColMod = Range(ColMod & "69").Column
If Target.Column = ColMod Then 'evalua que el cambio se haya producido en la columna indicada arriba
If Range("A1") = 2 Then 'cambia aquí la condicion que necesites que se cumpla
Range("D4").Value = Date 'coloca la fecha actual en la celda D4
End If
End If
End Sub
'----------
Bien, esta macro contempla una condición simple: si encuentra un 2 en la celda A1 coloca en la celda D4 la fecha del sistema. Desde luego puedes cambiar la condición y las direcciones de celda, de acuerdo a tus necesidades.
La macro se dispara cada vez que la hoja sufre algún cambio, pero hace aquella comprobación sólo si el cambio se produjo en la columna "B" (o la que le indiques)
El uso de este mecanimo se debe a que NO existe función standard de MS Excel que haga lo mismo.
- Ingresa al sitio www.porloschicos.com y, si quieres,
presiona el botón de donación (es gratis).
Confío en que lo harás.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas