Excel - ayuda con excel 2010

 
Vista:

ayuda con excel 2010

Publicado por MIGUCA (11 intervenciones) el 19/02/2010 02:23:37
hola, soy un novato en la programación de excel, por lo que si alguien pudiera ayudarme. estoy tratando de automatizar la puesta de la hora-de-cierre de un negocio. trataré de explicarme mejor. el lugar donde trabajo abre todos los días (de domingo a sábado) a las 3 pm. pero la hora de cierre varía. de domingo a jueves cierra a las 9 pm y los viernes y sábados a las 10 pm. (algunas veces, cualquier día de la semana se puede cerrar más tarde). la ayuda viene aquí, tenemos dos celdas que toman la hora y los minutos del sistema. queremos que en otras dos celdas ponga la hora-del-cierre. si es media hora o más temprano de la hora-de-cierre debe poner hora-de-cierre menos media-hora, o sea, si es de domingo a jueves, debe poner 8 en una celda y en la otra 30. pero cuando ya sean las 8:30 de la noche la máquina debe cambiar la hora-de-cierre a las 9:00 pm. si ese día se va a cerrar más tarde entonces la hora de cierre debe tomarla del sistema. lo mismo para los viernes y sábados, sólo con la variante de que la hora-de-cierre es una hora más tarde, pero el procedimiento es el mismo.

de antemano cualquier ayuda es agradecida. mi email es [email protected].
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
sin imagen de perfil

RE:ayuda con excel 2010

Publicado por jcs (494 intervenciones) el 19/02/2010 10:17:43
Muy buenas,

No das demasiadas explicaciones. ¿Cómo sabe excel cuál es la hora de cierre? ¿Se lo indicas tú? ¿Al cerrar el libro?

Te pongo una macro para este último caso, que tendrás que copiar en el objeto ThisWorkbook (Alt + F11):

Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Weekday([A1], vbSunday) < 6 Then
If Format(Time(), "HhNn") < "2030" Then
[b1] = 8
[c1] = 30
ElseIf Format(Time(), "HhNn") < "2100" Then
[b1] = 9
[c1] = 0
Else
[b1] = Format(Time(), "Hh")
[c1] = Format(Time(), "Nn")
End If
Else
If Format(Time(), "HhNn") < "2130" Then
[b1] = 9
[c1] = 30
ElseIf Format(Time(), "HhNn") < "2200" Then
[b1] = 10
[c1] = 0
Else
[b1] = Format(Time(), "Hh")
[c1] = Format(Time(), "Nn")
End If
End If
End Sub

Espero haberte entendido y que te funcione.

Un saludo. Juanjo.
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:ayuda con excel 2010

Publicado por MIGUCA (11 intervenciones) el 21/02/2010 10:17:15
gracias juanjo.

trataré de explicarme mejor.

primero que todo, las celdas donde pongo la hora de entrada y de salida son dos para cada una: en una pongo la hora y en otra los minutos. por lo que al hacerlo con una macro, creo y si me equivoco, me corriges, por favor, la macro que me enviastes no afectaría a las dos celdas. la hoja es muy sencilla, todo hecho a mano. si tienes una dirección de CORREO te la haré llegar.

siguiendo con la explicación te daré puntos a considerar:

01. la hora de entrada de todos los días es a las 3 pm.
02. la hora de cierre real (HCR) de domingo a jueves es a las 9 pm.
03. la HCR de los viernes y sábados es a las 10 pm.
04. siempre se pone, en el espacio hora de cierre (HC), media hora antes de la HCR.
05. llegado ese momento, la media hora antes del cierre, ponemos la HCR.
06. como a veces cerramos más tarde de la HCR, a partir de ese punto, la HC debe tomarse de la hora del sistema.

yo lo veo así:

(A) pregunto si DIASEM <= 5 (jueves), si la respuesta es verdadera, entonces le cargo a la HC, las 8:30 y pregunto
(B) si la HORA(AHORA()) < 20, si la respuesta es verdadera, la HC sigue siendo las 8:30, pero si la respuesta es falsa
(C) pregunto si la HORA(AHORA()) = 20, si la respuesta es verdadera, pregunto si MINUTO(AHORA()) <= 30, si es verdadera la respuesta, entonces la HC sigue siendo 8:30 pm. pero si es falso, entonces pongo la HCR.
(D) pero si HORA(AHORA()) > 20, entonces la HC es tomada de la hora del sistema.

si la respuesta en A fue falsa, o sea, si DIASEM > 5, le cargo a HC 9:30 y pregunto
B) si la HORA(AHORA()) < 21, si la respuesta es verdadera, la HC sigue siendo las 9:30, pero si la respuesta es falsa
(C) pregunto si la HORA(AHORA()) = 21, si la respuesta es verdadera, pregunto si MINUTO(AHORA()) <= 30, si es verdadera la respuesta, entonces la HC sigue siendo 9:30 pm. pero si es falso, entonces pongo la HCR.
(D) pero si HORA(AHORA()) > 21, entonces la HC es tomada de la hora del sistema.

espero haberme explicado mejor y quedo a la espera de su pronta respuesta.
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
sin imagen de perfil

RE:ayuda con excel 2010

Publicado por jcs (494 intervenciones) el 22/02/2010 09:13:28
Muy buenas,

te sigo entendiendo lo mismo que al principio. El planteamiento que haces es, en esencia, el mismo que el que yo puse en la macro, que sí diferencia las horas y minutos en dos celdas. Lo importante, sobre todo, es saber cómo se identifica la hora de cierre, o sea, si es porque en un momento dado tú se lo indicas o, como yo te ponía en mi anterior respuesta, si es al cerrar el libro.

Te he mandado un correo personal a la dirección que indicabas al principio, por si quieres mandarme la hoja.

Un saludo. Juanjo.
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:ayuda con excel 2010

Publicado por MIGUCA (11 intervenciones) el 05/03/2013 07:05:17
Un compañero me envió una respuesta, la cual con un retoque por aquí y otro por allá, resulto en lo siguiente

F5 = conteo de productos vendidos

B6 = SI(F5<>"";SI(HORA(AHORA())>12;HORA(AHORA())-12;HORA(AHORA()));"")

C6 = SI(F5<>"";MINUTO(AHORA());"")


=SI(DIASEM(HOY();1)<6;SI(B6<(20-12);8;SI(B6=(20-12);SI(C6<15;8;9);B6));SI(B6<(21-12);9;SI(B6=(21-12);SI(C6<15;9;10);B6)))

=SI(DIASEM(HOY();1)<6;SI(B6<(20-12);15;SI(B6=(20-12);SI(C6<16;15;0);C6));SI(B6<(21-12);15;SI(B6=(21-12);SI(C6<16;15;0);C6)))

gracias por tratar de ayudarme. pongo la respuesta para que otro principiante, como yo, pueda resolver su problema con este ejemplo.
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