Discussion:
Función =hoy() a texto y que no se actualice
(demasiado antiguo para responder)
YoMismo
2008-01-31 21:07:14 UTC
Permalink
***@s ***@s,

Tengo una hoja en la cual si la columna d es igual a SI, en la columna c me pone =hoy(). El problema es que necesito que esas fechas una vez guardado el archivo y al abrirlo otro día no se actualicen. Imagino que habrá una función que pueda pasarlas a texto o algo así. En fin, sé que me he explicado fatal, haber si me podéis echar un cable.

Gracias.
Ivan
2008-02-01 01:00:59 UTC
Permalink
hola,
.....si la columna d es igual a SI, en la columna c me pone =hoy(). El problema es que necesito que esas fechas una vez guardado el archivo y al abrirlo otro día no se actualicen. Imagino que habrá una función que pueda pasarlas a texto o algo así....<<<<
¿has probado con la propia funcion 'Texto'?. Este seria un ejmplo de
uso =>

=SI(A1="";"";TEXTO(HOY();"dd mmmm aa"))

espero te ayude

un saludo
Ivan
Ivan
2008-02-01 01:07:36 UTC
Permalink
disculpame, en este caso seguiria actualizandose.

Supongo que habra formas sin VBA (entre ellas copiar y pegar solo
formatos y valores) pero no sabria decirte

siento no ser de gran ayuda

un saludo
Ivan
Héctor Miguel
2008-02-01 05:12:43 UTC
Permalink
hola, (...) ?
... si la columna d es igual a SI, en la columna c me pone =hoy().
El problema es que necesito que esas fechas una vez guardado el archivo y al abrirlo otro dia no se actualicen.
Imagino que habra una funcion que pueda pasarlas a texto o algo asi.
En fin, se que me he explicado fatal, haber si me podeis echar un cable.
=hoy() es de las funciones volatiles que se actualizan en cada re/calculo de la aplicacion (aunque esto ya lo notaste) :))
mientras necesites condicionar la fecha por funciones como =si(...) me temo que no podras escapar a su volatilidad :(
una alternativa es usar codigo para dejar/modificar/eliminar/... la fecha segun cambios en determinadas celdas...
otra es que en lugar de condicionar por =si(...) uses los atajos de teclado para dejar fecha/hora "estaticas" (no volatiles)
solo que "esto" deberas hacerlo a mano en la celda donde necesites la fecha -???-

la fecha -> ctrl + punto_y_coma
la hora -> ctrl + dos_puntos

(probablemente deberas pulsar la tecla shift/mayusc en conjunto) -?-

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.
YoMismo
2008-02-01 15:53:56 UTC
Permalink
Héctor ¿hay forma de que "ctrl + punto_y_coma" sea una macro? si esto fuera
posible, ¿puedo hacer una función =si(condición;ejecutar_macro;caso
contrario)?

Saludos
Post by Héctor Miguel
hola, (...) ?
... si la columna d es igual a SI, en la columna c me pone =hoy().
El problema es que necesito que esas fechas una vez guardado el archivo y
al abrirlo otro dia no se actualicen.
Imagino que habra una funcion que pueda pasarlas a texto o algo asi.
En fin, se que me he explicado fatal, haber si me podeis echar un cable.
=hoy() es de las funciones volatiles que se actualizan en cada re/calculo
de la aplicacion (aunque esto ya lo notaste) :))
mientras necesites condicionar la fecha por funciones como =si(...) me
temo que no podras escapar a su volatilidad :(
una alternativa es usar codigo para dejar/modificar/eliminar/... la fecha
segun cambios en determinadas celdas...
otra es que en lugar de condicionar por =si(...) uses los atajos de
teclado para dejar fecha/hora "estaticas" (no volatiles)
solo que "esto" deberas hacerlo a mano en la celda donde necesites la fecha -???-
la fecha -> ctrl + punto_y_coma
la hora -> ctrl + dos_puntos
(probablemente deberas pulsar la tecla shift/mayusc en conjunto) -?-
si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.
Ivan
2008-02-01 17:24:31 UTC
Permalink
Post by YoMismo
...¿hay forma de que "ctrl + punto_y_coma" sea una macro? si esto fuera
posible, ¿puedo hacer una función =si(condición;ejecutar_macro;caso
contrario)?...<<<
¿quiza algo asi?

Public Function FechaSi( _
Optional Condicion As Variant = "", _
Optional SiCumple As Variant = "", _
Optional SiNoCumple As Variant = "", _
Optional Formato As String = "dd/mmm/yy hh:mm:ss" _
) As Variant
If SiCumple = "" Then SiCumple = Format(Now, Formato)
If Condicion = "" Or Condicion = True Then _
FechaSi = SiCumple Else FechaSi = SiNoCumple
End Function



un saludo
Ivan
Ivan
2008-02-01 17:37:08 UTC
Permalink
o quizas mejor asi

Public Function FechaSi( _
Optional Condicion As Variant = "", _
Optional SiCumple As Variant = "", _
Optional SiNoCumple As Variant = "", _
Optional Formato As String = "dd/mmm/yy" _
) As Variant
If SiCumple = "" Then
SiCumple = Format(Now, Formato)
ElseIf IsDate(SiCumple) Then
SiCumple = Format(CLng(CDate(SiCumple)), Formato)
End If
If Condicion = "" Or Condicion = True Then _
FechaSi = SiCumple Else FechaSi = SiNoCumple
End Function
Ivan
2008-02-01 20:08:07 UTC
Permalink
y como (en mi caso) no suele haber 2 sin 3, esta es un poco mas
completa

Public Function FechaSi( _
Optional Condicion As Variant = "", _
Optional SiCumple As Variant = "", _
Optional SiNoCumple As Variant = "", _
Optional Formato As String = "dd/mmm/yy hh:mm:ss" _
) As Variant
If SiCumple = "" Then
SiCumple = Format(Now, Formato)
ElseIf IsDate(SiCumple) Then
SiCumple = Format(CLng(CDate(SiCumple)), Formato)
End If
If IsDate(SiNoCumple) Then SiNoCumple = _
Format(CLng(CDate(SiNoCumple)), Formato)
If Condicion = "" Or Condicion = True Then _
FechaSi = SiCumple Else FechaSi = SiNoCumple
End Function
YoMismo
2008-02-01 20:18:41 UTC
Permalink
El caso Ivan es que en VB estoy un poco pez, la veras que intento ir
aprendiendo pero....., no sé muy bien si hay que meterlo en modulo o en
hoja1, etc. Podrías enviar el archivo y por un lado tengo la solución a mi
problema y por otro lado lo comprendo.

Gracias.
Post by Ivan
y como (en mi caso) no suele haber 2 sin 3, esta es un poco mas
completa
Public Function FechaSi( _
Optional Condicion As Variant = "", _
Optional SiCumple As Variant = "", _
Optional SiNoCumple As Variant = "", _
Optional Formato As String = "dd/mmm/yy hh:mm:ss" _
) As Variant
If SiCumple = "" Then
SiCumple = Format(Now, Formato)
ElseIf IsDate(SiCumple) Then
SiCumple = Format(CLng(CDate(SiCumple)), Formato)
End If
If IsDate(SiNoCumple) Then SiNoCumple = _
Format(CLng(CDate(SiNoCumple)), Formato)
If Condicion = "" Or Condicion = True Then _
FechaSi = SiCumple Else FechaSi = SiNoCumple
End Function
Ivan
2008-02-01 20:51:47 UTC
Permalink
hola
si hay que meterlo en modulo o en hoja1, etc. <<<
pegalo en un modulo 'normal' (estando en el editor de VBa ve al menu
Insertar => elige 'Modulo' a secas (o Standard, Normal, etc, pero NO
de clase) => en la vntana que se te abre pega el codigo.

pero mejor pega este otro, que evita acciones inncesarias


'----- en un modulo normal pega desde aqui-----------------
'
Public Function FechaSi( _
Optional Condicion As Variant = "", _
Optional SiCumple As Variant = "", _
Optional SiNoCumple As Variant = "", _
Optional Formato As String = "dd/mmm/yy" _
) As Variant
If Condicion = "" Or Condicion = True Then
If SiCumple = "" Then
SiCumple = Format(Now, Formato)
ElseIf IsDate(SiCumple) Then
SiCumple = Format(CLng(CDate(SiCumple)), Formato)
End If
FechaSi = SiCumple
Else
If IsDate(SiNoCumple) Then SiNoCumple = _
Format(CLng(CDate(SiNoCumple)), Formato)
FechaSi = SiNoCumple
End If
End Function
'----------------------pega hasta aqui --------------------------

pudes usarla tanto en la hoja omo en codigo. Algunos ejs. de uso en
hoja podrian ser (los ej. irian en una celda que no sea la que se
incluya en la formula, en caso de haberla)=>

1) para poner la fecha actual (no se actualiza) a secas con el formato
predeterminado en la funcion (dd/mmm/yy) el cual podrias cambiar n el
mismo codigo por l que utilices habitualmnte =>

=FechaSi()

2) lo mismo pero con el formato '1 de enero del 2000'

=FechaSi(;;;"d "&"""de"""&" mmmm "&"""del"""&" yyyy")

3) poner la fecha actual si en la celda A1 pone 'Hola'

=FechaSi(A1="Hola")

4) poner la fecha actual si en la celda A1 pone 'Hola' y si no poner
la del 1/01/2000

=FechaSi(A1="Hola";:"1/1/2000")

5) poner "Adios" si en la celda A1 pone 'Hola' y si no poner la fecha
actual

=fechasi(B1="Hola";"Adios";TEXTO(AHORA();"dd/mm/aa");"d "&"""de"""&"
mmmm "&"""del"""&" yyyy")

....son solo algunos ejemplos. Todas debn ir en una sola linea. y no
se atualizan salvo si cambias la condicion, n su caso


espero te ayude

un saludo
Ivan
YoMismo
2008-02-01 21:25:43 UTC
Permalink
Si Sr. perfecto. He hecho las pruebas cambiando la fecha del ordenador y va
de maravilla, mil gracias.

Ahora lo único que ando (teniendo el original a buen recaudo) es para que
cumpla el poner la fecha cuando la columna tenga el texto "si". Espero
aprender de tu ayuda. Repito, gracias.

Saludos
Post by Ivan
hola
si hay que meterlo en modulo o en hoja1, etc. <<<
pegalo en un modulo 'normal' (estando en el editor de VBa ve al menu
Insertar => elige 'Modulo' a secas (o Standard, Normal, etc, pero NO
de clase) => en la vntana que se te abre pega el codigo.
pero mejor pega este otro, que evita acciones inncesarias
'----- en un modulo normal pega desde aqui-----------------
'
Public Function FechaSi( _
Optional Condicion As Variant = "", _
Optional SiCumple As Variant = "", _
Optional SiNoCumple As Variant = "", _
Optional Formato As String = "dd/mmm/yy" _
) As Variant
If Condicion = "" Or Condicion = True Then
If SiCumple = "" Then
SiCumple = Format(Now, Formato)
ElseIf IsDate(SiCumple) Then
SiCumple = Format(CLng(CDate(SiCumple)), Formato)
End If
FechaSi = SiCumple
Else
If IsDate(SiNoCumple) Then SiNoCumple = _
Format(CLng(CDate(SiNoCumple)), Formato)
FechaSi = SiNoCumple
End If
End Function
'----------------------pega hasta aqui --------------------------
pudes usarla tanto en la hoja omo en codigo. Algunos ejs. de uso en
hoja podrian ser (los ej. irian en una celda que no sea la que se
incluya en la formula, en caso de haberla)=>
1) para poner la fecha actual (no se actualiza) a secas con el formato
predeterminado en la funcion (dd/mmm/yy) el cual podrias cambiar n el
mismo codigo por l que utilices habitualmnte =>
=FechaSi()
2) lo mismo pero con el formato '1 de enero del 2000'
=FechaSi(;;;"d "&"""de"""&" mmmm "&"""del"""&" yyyy")
3) poner la fecha actual si en la celda A1 pone 'Hola'
=FechaSi(A1="Hola")
4) poner la fecha actual si en la celda A1 pone 'Hola' y si no poner
la del 1/01/2000
=FechaSi(A1="Hola";:"1/1/2000")
5) poner "Adios" si en la celda A1 pone 'Hola' y si no poner la fecha
actual
=fechasi(B1="Hola";"Adios";TEXTO(AHORA();"dd/mm/aa");"d "&"""de"""&"
mmmm "&"""del"""&" yyyy")
....son solo algunos ejemplos. Todas debn ir en una sola linea. y no
se atualizan salvo si cambias la condicion, n su caso
espero te ayude
un saludo
Ivan
YoMismo
2008-02-01 21:41:09 UTC
Permalink
He hecho este minúsculo cambio:
Public Function FechaSi( _
Optional Condicion As Variant = "", _
Optional SiCumple As Variant = "", _
Optional SiNoCumple As Variant = "", _
Optional Formato As String = "dd/mmm/yy" _
) As Variant
If Condicion = "si" Or Condicion = True Then
If SiCumple = "" Then
SiCumple = Format(Now, Formato)
ElseIf IsDate(SiCumple) Then
SiCumple = Format(CLng(CDate(SiCumple)), Formato)
End If
FechaSi = SiCumple
Else
If IsDate(SiNoCumple) Then SiNoCumple = _
Format(CLng(CDate(SiNoCumple)), Formato)
FechaSi = SiNoCumple
End If
End Function
Es correcto así?
Post by YoMismo
Si Sr. perfecto. He hecho las pruebas cambiando la fecha del ordenador y
va de maravilla, mil gracias.
Ahora lo único que ando (teniendo el original a buen recaudo) es para que
cumpla el poner la fecha cuando la columna tenga el texto "si". Espero
aprender de tu ayuda. Repito, gracias.
Saludos
Post by Ivan
hola
si hay que meterlo en modulo o en hoja1, etc. <<<
pegalo en un modulo 'normal' (estando en el editor de VBa ve al menu
Insertar => elige 'Modulo' a secas (o Standard, Normal, etc, pero NO
de clase) => en la vntana que se te abre pega el codigo.
pero mejor pega este otro, que evita acciones inncesarias
'----- en un modulo normal pega desde aqui-----------------
'
Public Function FechaSi( _
Optional Condicion As Variant = "", _
Optional SiCumple As Variant = "", _
Optional SiNoCumple As Variant = "", _
Optional Formato As String = "dd/mmm/yy" _
) As Variant
If Condicion = "" Or Condicion = True Then
If SiCumple = "" Then
SiCumple = Format(Now, Formato)
ElseIf IsDate(SiCumple) Then
SiCumple = Format(CLng(CDate(SiCumple)), Formato)
End If
FechaSi = SiCumple
Else
If IsDate(SiNoCumple) Then SiNoCumple = _
Format(CLng(CDate(SiNoCumple)), Formato)
FechaSi = SiNoCumple
End If
End Function
'----------------------pega hasta aqui --------------------------
pudes usarla tanto en la hoja omo en codigo. Algunos ejs. de uso en
hoja podrian ser (los ej. irian en una celda que no sea la que se
incluya en la formula, en caso de haberla)=>
1) para poner la fecha actual (no se actualiza) a secas con el formato
predeterminado en la funcion (dd/mmm/yy) el cual podrias cambiar n el
mismo codigo por l que utilices habitualmnte =>
=FechaSi()
2) lo mismo pero con el formato '1 de enero del 2000'
=FechaSi(;;;"d "&"""de"""&" mmmm "&"""del"""&" yyyy")
3) poner la fecha actual si en la celda A1 pone 'Hola'
=FechaSi(A1="Hola")
4) poner la fecha actual si en la celda A1 pone 'Hola' y si no poner
la del 1/01/2000
=FechaSi(A1="Hola";:"1/1/2000")
5) poner "Adios" si en la celda A1 pone 'Hola' y si no poner la fecha
actual
=fechasi(B1="Hola";"Adios";TEXTO(AHORA();"dd/mm/aa");"d "&"""de"""&"
mmmm "&"""del"""&" yyyy")
....son solo algunos ejemplos. Todas debn ir en una sola linea. y no
se atualizan salvo si cambias la condicion, n su caso
espero te ayude
un saludo
Ivan
Ivan
2008-02-01 23:25:34 UTC
Permalink
hola,
Post by Ivan
Post by YoMismo
Ahora lo único que ando ...es para que
cumpla el poner la fecha cuando la columna tenga el texto "si". <<<<
Public Function FechaSi( _
  Optional Condicion As Variant = "", _
.......
  If Condicion = "si" Or Condicion = True Then
.....
   
Post by YoMismo
Es correcto así?
la verdad es que, mas que si es correcto (que no tiene porque no
serlo) [creo que] la pregunta deberia ser ¿es practico? o ¿es mejor?

aunque la rspuesta final dependera de lo que realmente busques, en mi
opinion creo que no =>

ten en cuenta que la condicion 'si' se la puedes pasar en el 1er
argumento a la funcion +/- asi=>

=FechaSi(A1="Si")

si esta formula la pusieras en (pj) B1 y la arrastraras hacia abajo
hasta donde te hiciera falta, cada vez que te pusiera 'Si' en la
columna A, te pondria en su vecina de B la fecha actual y si pusiera
cualquier otra cosa (o nada) te la dejaria vacia

para tenerlo mas claro, si quieres olvidate por un momento de que es
una funcion personalizada e imaginate que fuese una funcion integrada
de excel =>

¿como trabajarias con ella?

te describo los argumentos y su uso y razon de ser

Argumentos:

NOTA:
todos son opcionales. El motivo es que si se omiten todos se pude
utilizar como un equivalente de la funcion integrada Hoy() pero sin
actualizarse cada vez que haya un recalculo o se abra el libro. Su
sintaxis seria simplemente =>

FechaSi()

a) Condicion => evidentemente es lo que se tiene que cumplir para que
se obtenga uno u otro resultado.

Es de tipo variant y no boolean, precisamente por lo comentado en la
nota anterior, para poder asignarle una cadena vacia como valor
predetrminado en caso de omision, y dejar los valores verdadero/falso
para aplicarlos igual que en la funcion 'Si'.

.-> en caso de ser el unico argumento explicito, es decir que se
omitan el resto, devolvera la fecha actual solo si se cumple la
condicion. Pej. tu ej. =>

=FechaSi(A1="Si")

.-> si se omite, pero no se omite el siguiente argumento (SiCumple)
devolveria lo que se le pase a este 2º argumento. [aqui la verdad es
que se podria matizar mas para si se omite el 2º pero no el 3º que fus
el valor de este, pero no creo que tenga demasiado sentido)

b) SiCumple => valor devuelto si la condicion es verdadero. Si se
omite devuelve la fecha atual.

se puede pasar cualquir tipo de dato: desde una fecha hasta una celda

.->est ej. devolveria el contenido de la celda 'C1' si la condicion es
verdadero (si A1 s igual a 'SI')

=FechaSi(A1="Si";C1)

c) SiNoCumple => valor devuelto si la condicion es falsa. Si se omite
devuelve la fecha atual.

se puede pasar cualquir tipo de dato: desde una fecha hasta una celda

.->est ej. devolveria el contenido de la celda 'C1' si la condicion es
falsa (si A1 es diferente de 'SI').

=FechaSi(A1="Si";;C1)

fijate en que en la anterior formula, al haber omitido el 2º
argumento, en caso de que fuese verdadero te devolveria la fecha
actual

si quisieses que en caso de ser verdadero te devolviese otra cosa, por
ej. la palabra 'Ok', podrias hacerlo asi =>

=FechaSi(A1="Si";"Ok";C1)

d) Formato => por ultimo este argumento simplemente te pemite
asignarle un formato a la fecha dvuelta.

si se omite te devuelve las fechas con el formato "dd/mmm/yy"

este formato si lo podrias adaptar en el propio codigo, por si sueles
usar uno concreto que ese fuese el predetrminado y poder omitirlo
normalmente. Para ello cambia en esta parte =>

Optional Formato As String = "dd/mmm/yy"

el -> "dd/mmm/yy" por el que mas te interese

puede ir como argumento unico, omitiendo el resto, en cuyo caso te
devolveria la fecha actual pero con el formato espcificado


OJO: aunque en las formulas de hoja normales y en los formatos uses
'a' para especificar el formato de año, en este argumento debes
pasarslo siempre como 'y', pudiendo darse el caso de tener que usar
ambas formas en la misma formula, como en uno de los ej. del mensaje
anterior =>

=FechaSi(B1="Hola";"Adios";TEXTO(AHORA();"dd/mm/aa");"d "&"""de"""&"
mmmm "&"""del"""&" yyyy")


bueno, espo te aclare algo
Ivan
2008-02-01 23:51:07 UTC
Permalink
disulpa. pero aqui
Post by Ivan
c) SiNoCumple => valor devuelto si la condicion es falsa. Si se omite
devuelve la fecha atual.
se me ha ido la mano. En realidad si se omite devuelve una cadena
vacia("")

y OJO. si, tanto en este argumento, como en el anterior le pasases una
funcion tipo Ahora(), Hoy(), etc [como en el ultimo ej. del mensaje
anterior] esta si se actualizaria

un saludo y disulpas a todos por la ristra de mensajes
Ivan
YoMismo
2008-02-02 14:25:37 UTC
Permalink
Ahora está perfecto Iván, he probado y está Ok lo que me comentas
=FechaSi(a1="si") y va cojonudo.

Esta ristra de mensajes, han conseguido lo primero ayuda y lo segundo
enseñar, así que bien está la ristra.

Mil Gracias.
Post by Ivan
disulpa. pero aqui
Post by Ivan
c) SiNoCumple => valor devuelto si la condicion es falsa. Si se omite
devuelve la fecha atual.
se me ha ido la mano. En realidad si se omite devuelve una cadena
vacia("")
y OJO. si, tanto en este argumento, como en el anterior le pasases una
funcion tipo Ahora(), Hoy(), etc [como en el ultimo ej. del mensaje
anterior] esta si se actualizaria
un saludo y disulpas a todos por la ristra de mensajes
Ivan
Ivan
2008-02-03 00:17:32 UTC
Permalink
hola de nuevo,

disculpa si soy un pesado, pero no me acababa de gustar la propuesta

aunque para lo que buscabas posiblemente sea valida, tenia algunas
cosas que no la hacian equivalente a la funcion 'Si' pero devolviendo
la fecha actual por defecto en los casos ya comentados, que era un
poco la intencion

pej. no se le podian pasar cadenas vacias ("") como argumentos de
devolucion, o mejor dicho, si se le podian pasar, pero en el caso de
SiCumple en lugar de dicha cadena te devolveria la fecha actual

otro 'handicap' eran los fomatos de fecha que simpre acababan
dvolviendo una cadena

esta nueva 'version' creo que mas o menos cubre dichos problemas =>


Public Function FechaSi_3( _
Optional Condicion As Variant, _
Optional SiCumple As Variant, _
Optional SiNoCumple As Variant, _
Optional Formato As Variant _
) As Variant
Dim Fecha As Variant, Valor As Variant
Fecha = Now
If IsMissing(Condicion) And IsMissing(SiCumple) And _
IsMissing(SiNoCumple) Then FechaSi_3 = IIf( _
IsMissing(Formato), Fecha, Format(Fecha, _
Formato)): Exit Function
Condicion = IIf(Not IsMissing(Condicion), Condicion, _
Not IsMissing(SiCumple))
If IsMissing(SiCumple) Then SiCumple = Fecha
If IsMissing(SiNoCumple) Then SiNoCumple = Fecha
Valor = IIf(Condicion, SiCumple, SiNoCumple)
If IsMissing(Formato) Then FechaSi_3 = Valor Else _
FechaSi_3 = Format(Valor, Formato)
End Function


En este caso los argumentos son los mismos pero con estas variaciones
en su 'funcionamiento' =>

1.-> si se omiten todos devuelve la fecha y hora actual del sistema
pero como nº de serie. Para verlo con un formato determinado habria
que formatear el rango. Pej. seleccionandolo y con formato celdas =>
Numero => fecha o personalizada y aplicando el formato deseado, o via
codigo con algo tipo =>

Range("talRango").NumberFormat="dd/mm/yy"

esto tiene la ventaja de que el valor devuelto es una fecha y no una
cadena

Ej: '=FechaSi_3()'

2.->si se omiten todos menos el formato devuelve la fecha y hora
actual del sistema pero como cadena formateda segun el formato pasado

Ej: '=FechaSi_3(;;;"dddd d mmmm yy hh:mm")'

NOTA: en cualquier caso, siempre que se omita formato devolvera el
dato tal cual, aunque en el caso de las fechas lo hara como el serial
de la fecha. Y cuando no se omita lo devolvera formateado segun se
indique (si es un formato valido) pero como una cadena

3.-> si se omite 'Condicion' pero no uno de los dos siguients
argumentos (SiCumple y/o SiNoCumple) la verdad es que la formula solo
tendria sentido para dar formato al valor (o celda) pasado. Devuelve
el 1º de los dos que no se haya omitido con l formato pasado [si no se
omite Formato]

Ej: '=FechaSi_3(;A1;;"0000")'

4.-> si 'Condicion' no se omite =>

a) si se omiten los restantes devuelve lo mismo que en el punto 1
(fecha y hora como serial) pero solo si se cumple la condicion (OJO->
si no se cumple [creo que] devuelve 0)

b) si se omiten los 2 segundos pero se espcifica un formato, lo mismo
que en el punto 2 (fecha formateada como cadna) pero tambien solo si
se cumple la condicion

c)si se omite uno de los dos resultados posibles (SiCumple o
SiNoCumple) el argumento omitido toma la fecha y hora del sistema.
Segun se cumpla la condicion devolvera uno u otro (el valor pasado o
la fecha), y formatado o no segun se omita o no Formato

d) si no se omiten ni el 2º ni el 3º (SiCumple o SiNoCumple)
funcionara como la funcion'Si'i, con lo que no tendria sntido salvo
para formatear el resultado especificando 'Formato'

bueno, realmente es para practicar un poco y no se hasta que punto
resultara util o sera mejorable. En cualquier caso ahora si admite una
cadena vacia como argumento a devolver

OJO-> al pasar un formato al argumento idem, al igual que con el
formato de fecha en el que el año hay que pasarlo con ' Y ' el signo
decimal y/o el separador de miles hay que pasarselo estilo VBA, es
decir: punto (.) para el decimal y oma (,) para el sep. de miles

pero solo a este argumento, al resto se l pasarian normal, segun la
configuracion del equipo

bueno, de nuevo disculpas por el 'rollo' pero no me habia qudado muy a
gusto con la anterior funcion

un saludo
Ivan

PD: aunque he intentado corregir la mayoria, es posible que mi teclado
se haya zampado unas cuantas letras (sobre todo la e, s, d y c) pero
mientras no pueda cambiarlo solo espero que no vaya a mas su apetito
YoMismo
2008-02-03 11:33:39 UTC
Permalink
Reitero mi agradecimiento Ivan, no solo por la ayuda sino por las
explicaciones que al final es lo que nos enseña. Para la necesidad que
tengo, me quedo con el anterior, ya que después de haberlo probado cumple
pefectamente la necesidad que tenía, que era; si una columna determinada
estaba escrita con el texto "SI" me ponga la fecha del momento pero cuando
habra el archivo otro día no actualice la fecha y tu trabajo me ha cubierto
la necesidad.

De todas formas, me aguardo el último trabajo =FechaSi_3() porque seguro me
hará falta en un futuro.

A todo esto, si supieras de algún ficherito (curso que enseñe VB) te
agradecería me indicaras donde conseguirlo, si es gratis, mejor :-)

Un abrazo y mil gracias.
"Ivan" <***@teleline.es> escribi� en el mensaje de noticias news:71f31ca8-31b4-4c3a-870c-***@q21g2000hsa.googlegroups.com...
hola de nuevo,

disculpa si soy un pesado, pero no me acababa de gustar la propuesta

aunque para lo que buscabas posiblemente sea valida, tenia algunas
cosas que no la hacian equivalente a la funcion 'Si' pero devolviendo
la fecha actual por defecto en los casos ya comentados, que era un
poco la intencion

pej. no se le podian pasar cadenas vacias ("") como argumentos de
devolucion, o mejor dicho, si se le podian pasar, pero en el caso de
SiCumple en lugar de dicha cadena te devolveria la fecha actual

otro 'handicap' eran los fomatos de fecha que simpre acababan
dvolviendo una cadena

esta nueva 'version' creo que mas o menos cubre dichos problemas =>


Public Function FechaSi_3( _
Optional Condicion As Variant, _
Optional SiCumple As Variant, _
Optional SiNoCumple As Variant, _
Optional Formato As Variant _
) As Variant
Dim Fecha As Variant, Valor As Variant
Fecha = Now
If IsMissing(Condicion) And IsMissing(SiCumple) And _
IsMissing(SiNoCumple) Then FechaSi_3 = IIf( _
IsMissing(Formato), Fecha, Format(Fecha, _
Formato)): Exit Function
Condicion = IIf(Not IsMissing(Condicion), Condicion, _
Not IsMissing(SiCumple))
If IsMissing(SiCumple) Then SiCumple = Fecha
If IsMissing(SiNoCumple) Then SiNoCumple = Fecha
Valor = IIf(Condicion, SiCumple, SiNoCumple)
If IsMissing(Formato) Then FechaSi_3 = Valor Else _
FechaSi_3 = Format(Valor, Formato)
End Function


En este caso los argumentos son los mismos pero con estas variaciones
en su 'funcionamiento' =>

1.-> si se omiten todos devuelve la fecha y hora actual del sistema
pero como nº de serie. Para verlo con un formato determinado habria
que formatear el rango. Pej. seleccionandolo y con formato celdas =>
Numero => fecha o personalizada y aplicando el formato deseado, o via
codigo con algo tipo =>

Range("talRango").NumberFormat="dd/mm/yy"

esto tiene la ventaja de que el valor devuelto es una fecha y no una
cadena

Ej: '=FechaSi_3()'

2.->si se omiten todos menos el formato devuelve la fecha y hora
actual del sistema pero como cadena formateda segun el formato pasado

Ej: '=FechaSi_3(;;;"dddd d mmmm yy hh:mm")'

NOTA: en cualquier caso, siempre que se omita formato devolvera el
dato tal cual, aunque en el caso de las fechas lo hara como el serial
de la fecha. Y cuando no se omita lo devolvera formateado segun se
indique (si es un formato valido) pero como una cadena

3.-> si se omite 'Condicion' pero no uno de los dos siguients
argumentos (SiCumple y/o SiNoCumple) la verdad es que la formula solo
tendria sentido para dar formato al valor (o celda) pasado. Devuelve
el 1º de los dos que no se haya omitido con l formato pasado [si no se
omite Formato]

Ej: '=FechaSi_3(;A1;;"0000")'

4.-> si 'Condicion' no se omite =>

a) si se omiten los restantes devuelve lo mismo que en el punto 1
(fecha y hora como serial) pero solo si se cumple la condicion (OJO->
si no se cumple [creo que] devuelve 0)

b) si se omiten los 2 segundos pero se espcifica un formato, lo mismo
que en el punto 2 (fecha formateada como cadna) pero tambien solo si
se cumple la condicion

c)si se omite uno de los dos resultados posibles (SiCumple o
SiNoCumple) el argumento omitido toma la fecha y hora del sistema.
Segun se cumpla la condicion devolvera uno u otro (el valor pasado o
la fecha), y formatado o no segun se omita o no Formato

d) si no se omiten ni el 2º ni el 3º (SiCumple o SiNoCumple)
funcionara como la funcion'Si'i, con lo que no tendria sntido salvo
para formatear el resultado especificando 'Formato'

bueno, realmente es para practicar un poco y no se hasta que punto
resultara util o sera mejorable. En cualquier caso ahora si admite una
cadena vacia como argumento a devolver

OJO-> al pasar un formato al argumento idem, al igual que con el
formato de fecha en el que el año hay que pasarlo con ' Y ' el signo
decimal y/o el separador de miles hay que pasarselo estilo VBA, es
decir: punto (.) para el decimal y oma (,) para el sep. de miles

pero solo a este argumento, al resto se l pasarian normal, segun la
configuracion del equipo

bueno, de nuevo disculpas por el 'rollo' pero no me habia qudado muy a
gusto con la anterior funcion

un saludo
Ivan

PD: aunque he intentado corregir la mayoria, es posible que mi teclado
se haya zampado unas cuantas letras (sobre todo la e, s, d y c) pero
mientras no pueda cambiarlo solo espero que no vaya a mas su apetito
Ivan
2008-02-03 18:29:42 UTC
Permalink
hola de nuevo
..., si supieras de algún ficherito (curso que enseñe VB) te
agradecería me indicaras donde conseguirlo, si es gratis, mejor :-)..<<<<
aunque posiblemente las opciones son muchas, aun mas si te manejas con
el ingles, al final te pongo un extracto de una respuesta que he dado
algunas veces sobre el tema,

pero antes, sobre todo por si alguien intentara usarla, permiteme de
nuevo corregir mi ultima propuesta, en la que podia no devolver lo que
esperabamos en caso de que las 2 posibilidades a devolver fuesen de
distinto tipo (uno fecha y otro numero, o viceversa) y se hubiese
expecificado un formato de alguno de los dos tipos.

En este caso, posiblemente y si el dato admitiese el formato pasado,
nos lo transformaria en lo que no es (un nº en fecha o una
fecha[serial] en nº aunque aambos como cadena)

pej->

=fechasi_3(A1="";1;;"dd/mm/yy")

en este caso esprariamos que si a1 esta vacio nos devolvira el nº 1 y
sin embargo nos dvolveria => 31/12/99


.esta [creo que ya es la ultima que envio, aunqu si alguien ve algun
problema mas no importaria si lo comenta] (pn)ultima version parece
corregirlo convirtiendo el argumento 'Formato' a uno specifio para
fecha y añadiendo otro formato especifico
para numeros

Public Function FechaSi_4( _
Optional Condicion As Variant, _
Optional SiCumple As Variant, _
Optional SiNoCumple As Variant, _
Optional FormatoFecha As Variant, _
Optional FormatoNro As Variant _
) As Variant
Dim Fecha As Variant, Valor As Variant, EsFecha As Boolean
Fecha = Now
If IsMissing(Condicion) And IsMissing(SiCumple) And _
IsMissing(SiNoCumple) Then FechaSi_4 = IIf( _
IsMissing(FormatoFecha), Fecha, Format(Fecha, _
FormatoFecha)): Exit Function
Condicion = IIf(Not IsMissing(Condicion), Condicion, _
Not IsMissing(SiCumple))
If IsMissing(SiCumple) Then SiCumple = Fecha
If IsMissing(SiNoCumple) Then SiNoCumple = Fecha
EsFecha = IIf(Condicion, IsDate(SiCumple), IsDate(SiNoCumple))
Valor = IIf(Condicion, SiCumple, SiNoCumple)
If EsFecha Then
If IsMissing(FormatoFecha) Then FechaSi_4 = Valor _
Else FechaSi_4 = Format(Valor, FormatoFecha)
Else
If IsMissing(FormatoNro) Then FechaSi_4 = Valor _
Else FechaSi_4 = Format(Valor, FormatoNro)
End If
End Function

bueno, creo que ya si que me paro

a continuacio te pongo el extracto sobre manuales y sitios qu te
mncionaba

un saludo
Ivan

----- extracto de extractos de conversaciones sobre manuals y sitios
sobre VBa y excel
me comentastes que conocías páginas donde
encontrar "Manuales de VBA para torpes que quieren meterse en el ajo"
la verdad es que hay muchas opciones en la web, pero por darte uno en
concreto que creo es bastante completo, y aunque
es para vba access, el ¿90%? es comun a excel, sobre todo lo que se
refiere a la sintaxis y diversos tipos de
estructuras, datos, variables, etc

Euardo Olaz: manual VBA acces, bastante completo y en general
aplicable a excel
http://www.olaz.net/descargas/access/curso_vba/vba_entregas.htm


vinculo a conversaciones sobre eñ tema 'Manuales VBA', en ellas
encontraras muchas propuestas
http://tinyurl.com/2r5jqn


y aqui va una respuesta de HM al repecto.


----------------------hector Miguel --------------------------------
Hay alguna forma de descargar algun excelente manual.
Gracias Ante todo y me regalan alguan dire wwww
en cuanto a alguna 'recomendacion' por material de aprendizaje
[generalmente
'mi' respuesta es la que te 'apunto' al final]...
[ademas] acostumbro 'afirmar' que: "cada quien avanza, al 'ritmo' que
quiere/puede/necesita/..." :))

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.


-> me gustaria decirte que leyendo 'tales o cuales' libros ... [pero,
estaria siendo 'excluyente'] ;)
todo material de estudio [manuales, {F1}, libros, revistas,
cursos,
web's, estos foros, etc.] ->es excel...ente<-
ademas considera que [en muchas de las ocasiones]
-> 'buscando una cosa'... 'encuentras otra' [que se te habia
'perdido']
-> o ['te topas' con] 'la hermana que se escapo de su prision'
[sor-presa... NO esta !!!] :))


-> cuando 'se atora la carreta' [que nos sucede a todos] :-(
NO es 'imprescindible' saberlo todo ;) es suficiente con
saber...
el telefono del que sabe... o el e-mail... o la web... o... por
que no
consultas en el foro? :D


aunque [supongo que de algun modo] no 'escaparas' de consultar al
asistente
{F1} de excel/vba...
encontraras [algunos] manuales/instructivos/cursos/etc. en las
siguientes
direcciones:
[aunque... 'calificarlo/s' de sencillos/complicados/completos/
buenos/...
dependera de factores 'personales'] :D


una lista de manuales y tutoriales [ingles]
http://www.virtualhelpdeskcentral.com/sitecategory.asp?SiteID=12&NoGU...
goryID=18


algunas paginas en ingles...
Charles Williams (DecisionModels): http://www.decisionmodels.com/
Tushar Mehta: http://www.tushar-mehta.com/excel/
Laurent Longre: http://xcell05.free.fr/
Rob Bovey: http://www.appspro.com/Tips/Tips_And_Tricks.htm
Stephen Bullen' Excel MVP's page: http://www.bmsltd.ie/MVP/Default.htm
Jurgen Volkerink (KeepItCool):
http://members.chello.nl/keepitcool/addins.html
Matt Evans: http://www.exinfm.com/free_spreadsheets.html
Karl Peterson: http://vb.mvps.org/samples/
Bob Umlas: http://www.emailoffice.com/excel/arrays-bobumlas.html
Carlo Quintero: http://www.mztools.com/
Van Gelder: http://homepages.paradise.net.nz/~robree/excel/
MiStupid (Training Online): http://mistupid.com/tutorials/excel/
ExtremeVBTalk(newsgroup): http://www.visualbasicforum.com/


algunas paginas en castellano...
http://www.franciscopascual.com/Archivos/Excel%202002.zip
http://www.javeriana.edu.co/decisiones/modelos/ejemplos_y_ejercicios....
http://www.javeriana.edu.co/cursad/diplomado/ejemplos_j_sarmiento.html
http://members.fortunecity.es/tonelorc/eexcel.html
http://www.aulaclic.es/excel2000/f_excel2000.htm
http://64.226.188.26/sivnetwork-www/cursos_gratis/excel/Excel.htm
http://www.territoriopc.com/excel/
http://interinfo.iespana.es/interinfo/info_general/manuales/manuales_...
http://www.fullwebs.com.uy/endondeestamos/Downloads/Tutoriales/excel.pdf
http://office.arnulfoperez.com/excel/
http://lacher.com/toc.htm
http://www.sistemaslym.net/vba/excel/excel.html
http://es.geocities.com/lacibelesdepunilla/macros.htm
http://es.geocities.com/lacibelesdepunilla/macros1.htm
http://www.macroheavy.com/excel/excel.asp
http://www.geocities.com/gorita_2000/VBA.htm
http://www.excelavanzado.com/
http://www.xtec.es/~rlloren4/KBEsp2.htm
http://www.exceluciones.com/portal/index.php?article=35
YoMismo
2008-02-03 19:12:01 UTC
Permalink
:-) Gracias.


"Ivan" <***@teleline.es> escribi� en el mensaje de noticias news:a3cb8324-606b-461d-919f-***@q21g2000hsa.googlegroups.com...
hola de nuevo
..., si supieras de algún ficherito (curso que enseñe VB) te
agradecería me indicaras donde conseguirlo, si es gratis, mejor :-)..<<<<
aunque posiblemente las opciones son muchas, aun mas si te manejas con
el ingles, al final te pongo un extracto de una respuesta que he dado
algunas veces sobre el tema,

pero antes, sobre todo por si alguien intentara usarla, permiteme de
nuevo corregir mi ultima propuesta, en la que podia no devolver lo que
esperabamos en caso de que las 2 posibilidades a devolver fuesen de
distinto tipo (uno fecha y otro numero, o viceversa) y se hubiese
expecificado un formato de alguno de los dos tipos.

En este caso, posiblemente y si el dato admitiese el formato pasado,
nos lo transformaria en lo que no es (un nº en fecha o una
fecha[serial] en nº aunque aambos como cadena)

pej->

=fechasi_3(A1="";1;;"dd/mm/yy")

en este caso esprariamos que si a1 esta vacio nos devolvira el nº 1 y
sin embargo nos dvolveria => 31/12/99


.esta [creo que ya es la ultima que envio, aunqu si alguien ve algun
problema mas no importaria si lo comenta] (pn)ultima version parece
corregirlo convirtiendo el argumento 'Formato' a uno specifio para
fecha y añadiendo otro formato especifico
para numeros

Public Function FechaSi_4( _
Optional Condicion As Variant, _
Optional SiCumple As Variant, _
Optional SiNoCumple As Variant, _
Optional FormatoFecha As Variant, _
Optional FormatoNro As Variant _
) As Variant
Dim Fecha As Variant, Valor As Variant, EsFecha As Boolean
Fecha = Now
If IsMissing(Condicion) And IsMissing(SiCumple) And _
IsMissing(SiNoCumple) Then FechaSi_4 = IIf( _
IsMissing(FormatoFecha), Fecha, Format(Fecha, _
FormatoFecha)): Exit Function
Condicion = IIf(Not IsMissing(Condicion), Condicion, _
Not IsMissing(SiCumple))
If IsMissing(SiCumple) Then SiCumple = Fecha
If IsMissing(SiNoCumple) Then SiNoCumple = Fecha
EsFecha = IIf(Condicion, IsDate(SiCumple), IsDate(SiNoCumple))
Valor = IIf(Condicion, SiCumple, SiNoCumple)
If EsFecha Then
If IsMissing(FormatoFecha) Then FechaSi_4 = Valor _
Else FechaSi_4 = Format(Valor, FormatoFecha)
Else
If IsMissing(FormatoNro) Then FechaSi_4 = Valor _
Else FechaSi_4 = Format(Valor, FormatoNro)
End If
End Function

bueno, creo que ya si que me paro

a continuacio te pongo el extracto sobre manuales y sitios qu te
mncionaba

un saludo
Ivan

----- extracto de extractos de conversaciones sobre manuals y sitios
sobre VBa y excel
me comentastes que conocías páginas donde
encontrar "Manuales de VBA para torpes que quieren meterse en el ajo"
la verdad es que hay muchas opciones en la web, pero por darte uno en
concreto que creo es bastante completo, y aunque
es para vba access, el ¿90%? es comun a excel, sobre todo lo que se
refiere a la sintaxis y diversos tipos de
estructuras, datos, variables, etc

Euardo Olaz: manual VBA acces, bastante completo y en general
aplicable a excel
http://www.olaz.net/descargas/access/curso_vba/vba_entregas.htm


vinculo a conversaciones sobre eñ tema 'Manuales VBA', en ellas
encontraras muchas propuestas
http://tinyurl.com/2r5jqn


y aqui va una respuesta de HM al repecto.


----------------------hector Miguel --------------------------------
Hay alguna forma de descargar algun excelente manual.
Gracias Ante todo y me regalan alguan dire wwww
en cuanto a alguna 'recomendacion' por material de aprendizaje
[generalmente
'mi' respuesta es la que te 'apunto' al final]...
[ademas] acostumbro 'afirmar' que: "cada quien avanza, al 'ritmo' que
quiere/puede/necesita/..." :))

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.


-> me gustaria decirte que leyendo 'tales o cuales' libros ... [pero,
estaria siendo 'excluyente'] ;)
todo material de estudio [manuales, {F1}, libros, revistas,
cursos,
web's, estos foros, etc.] ->es excel...ente<-
ademas considera que [en muchas de las ocasiones]
-> 'buscando una cosa'... 'encuentras otra' [que se te habia
'perdido']
-> o ['te topas' con] 'la hermana que se escapo de su prision'
[sor-presa... NO esta !!!] :))


-> cuando 'se atora la carreta' [que nos sucede a todos] :-(
NO es 'imprescindible' saberlo todo ;) es suficiente con
saber...
el telefono del que sabe... o el e-mail... o la web... o... por
que no
consultas en el foro? :D


aunque [supongo que de algun modo] no 'escaparas' de consultar al
asistente
{F1} de excel/vba...
encontraras [algunos] manuales/instructivos/cursos/etc. en las
siguientes
direcciones:
[aunque... 'calificarlo/s' de sencillos/complicados/completos/
buenos/...
dependera de factores 'personales'] :D


una lista de manuales y tutoriales [ingles]
http://www.virtualhelpdeskcentral.com/sitecategory.asp?SiteID=12&NoGU...
goryID=18


algunas paginas en ingles...
Charles Williams (DecisionModels): http://www.decisionmodels.com/
Tushar Mehta: http://www.tushar-mehta.com/excel/
Laurent Longre: http://xcell05.free.fr/
Rob Bovey: http://www.appspro.com/Tips/Tips_And_Tricks.htm
Stephen Bullen' Excel MVP's page: http://www.bmsltd.ie/MVP/Default.htm
Jurgen Volkerink (KeepItCool):
http://members.chello.nl/keepitcool/addins.html
Matt Evans: http://www.exinfm.com/free_spreadsheets.html
Karl Peterson: http://vb.mvps.org/samples/
Bob Umlas: http://www.emailoffice.com/excel/arrays-bobumlas.html
Carlo Quintero: http://www.mztools.com/
Van Gelder: http://homepages.paradise.net.nz/~robree/excel/
MiStupid (Training Online): http://mistupid.com/tutorials/excel/
ExtremeVBTalk(newsgroup): http://www.visualbasicforum.com/


algunas paginas en castellano...
http://www.franciscopascual.com/Archivos/Excel%202002.zip
http://www.javeriana.edu.co/decisiones/modelos/ejemplos_y_ejercicios....
http://www.javeriana.edu.co/cursad/diplomado/ejemplos_j_sarmiento.html
http://members.fortunecity.es/tonelorc/eexcel.html
http://www.aulaclic.es/excel2000/f_excel2000.htm
http://64.226.188.26/sivnetwork-www/cursos_gratis/excel/Excel.htm
http://www.territoriopc.com/excel/
http://interinfo.iespana.es/interinfo/info_general/manuales/manuales_...
http://www.fullwebs.com.uy/endondeestamos/Downloads/Tutoriales/excel.pdf
http://office.arnulfoperez.com/excel/
http://lacher.com/toc.htm
http://www.sistemaslym.net/vba/excel/excel.html
http://es.geocities.com/lacibelesdepunilla/macros.htm
http://es.geocities.com/lacibelesdepunilla/macros1.htm
http://www.macroheavy.com/excel/excel.asp
http://www.geocities.com/gorita_2000/VBA.htm
http://www.excelavanzado.com/
http://www.xtec.es/~rlloren4/KBEsp2.htm
http://www.exceluciones.com/portal/index.php?article=35
n***@gmail.com
2019-08-07 21:46:13 UTC
Permalink
Post by Ivan
hola
si hay que meterlo en modulo o en hoja1, etc. <<<
pegalo en un modulo 'normal' (estando en el editor de VBa ve al menu
Insertar => elige 'Modulo' a secas (o Standard, Normal, etc, pero NO
de clase) => en la vntana que se te abre pega el codigo.
pero mejor pega este otro, que evita acciones inncesarias
'----- en un modulo normal pega desde aqui-----------------
'
Public Function FechaSi( _
Optional Condicion As Variant = "", _
Optional SiCumple As Variant = "", _
Optional SiNoCumple As Variant = "", _
Optional Formato As String = "dd/mmm/yy" _
) As Variant
If Condicion = "" Or Condicion = True Then
If SiCumple = "" Then
SiCumple = Format(Now, Formato)
ElseIf IsDate(SiCumple) Then
SiCumple = Format(CLng(CDate(SiCumple)), Formato)
End If
FechaSi = SiCumple
Else
If IsDate(SiNoCumple) Then SiNoCumple = _
Format(CLng(CDate(SiNoCumple)), Formato)
FechaSi = SiNoCumple
End If
End Function
'----------------------pega hasta aqui --------------------------
pudes usarla tanto en la hoja omo en codigo. Algunos ejs. de uso en
hoja podrian ser (los ej. irian en una celda que no sea la que se
incluya en la formula, en caso de haberla)=>
1) para poner la fecha actual (no se actualiza) a secas con el formato
predeterminado en la funcion (dd/mmm/yy) el cual podrias cambiar n el
mismo codigo por l que utilices habitualmnte =>
=FechaSi()
2) lo mismo pero con el formato '1 de enero del 2000'
=FechaSi(;;;"d "&"""de"""&" mmmm "&"""del"""&" yyyy")
3) poner la fecha actual si en la celda A1 pone 'Hola'
=FechaSi(A1="Hola")
4) poner la fecha actual si en la celda A1 pone 'Hola' y si no poner
la del 1/01/2000
=FechaSi(A1="Hola";:"1/1/2000")
5) poner "Adios" si en la celda A1 pone 'Hola' y si no poner la fecha
actual
=fechasi(B1="Hola";"Adios";TEXTO(AHORA();"dd/mm/aa");"d "&"""de"""&"
mmmm "&"""del"""&" yyyy")
....son solo algunos ejemplos. Todas debn ir en una sola linea. y no
se atualizan salvo si cambias la condicion, n su caso
espero te ayude
un saludo
Ivan
Buenas noches a todos. Agradezco muchísimo este aporte, me ha solucionado bastante las cosas... pero fue temporal.
Mientras tenía el archivo en forma local no hubo problema. Ahora bien, cuando lo compartí en red y se abrió desde otra máquina, al pedir "Habilitar los macros" se reinicia la función y me convierte todas las celdas con contenido al día de hoy. Podemos ver alguna posibilidad, por ejemplo cuando la celda cambie con el evento "Worksheet_Change"? Agradezco de antemano cualquier ayuda.

Saludos.
W***@m
2008-02-05 21:50:32 UTC
Permalink
Hola, YoMismo, te presento esta otra opción, pruébala y me comentas si te queda alguna duda:
En el evento "Worksheet_Change" de la hoja en cuestión, pegas este fragmento de código:

If Intersect([D:D], Target) Is Nothing Then Exit Sub
If UCase(Trim(Target)) = "SI" Then
If Target.Offset(0, -1) = "" Then
Target.Offset(0, -1) = "'" & Format(Date, "dd/mmm/yyyy")
End If
End If

Espero que te sirva. Chao,
***@m

--------------------------------------------------------------------------------

--------------------------------------------------------------------------------

"YoMismo" <QuieroSaber> escribió en el mensaje de noticias:608FA120-68B1-495E-AB0A-***@microsoft.com...
***@s ***@s,

Tengo una hoja en la cual si la columna d es igual a SI, en la columna c me pone =hoy(). El problema es que necesito que esas fechas una vez guardado el archivo y al abrirlo otro día no se actualicen. Imagino que habrá una función que pueda pasarlas a texto o algo así. En fin, sé que me he explicado fatal, haber si me podéis echar un cable.

Gracias.
Lenin Puga
2019-10-23 14:10:07 UTC
Permalink
Sub FechaActual()
'
' FechaActual Macro
'

'
ActiveCell.FormulaR1C1 = "=TODAY()"
ActiveCell.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub
Daniel Cettour
2020-09-29 16:12:55 UTC
Permalink
Post by Lenin Puga
Sub FechaActual()
'
' FechaActual Macro
'
'
ActiveCell.FormulaR1C1 = "=TODAY()"
ActiveCell.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub
acá hay un ejemplo sin usar macros, sigan este video de youtube

=SI(A1<>"";SI(B1="";HOY();B1);"") habilitando cálculo iterativo de 1 iteración en archivo->opciones->fórmulas
Alfredo Vela
2023-04-24 22:21:51 UTC
Permalink
Hola lo que hice para que no se actualice la formula fue anexarle otra celda y de esta forma se queda bloqueada la fecha y hora
les comparto la formula
=+IF(E22<>"",IF(G22="",NOW(),F22),"")

Continúe leyendo en narkive:
Loading...