Excel - AYUDA !!! CON FORMULA "POR FAVOR"

   
Vista:

AYUDA !!! CON FORMULA "POR FAVOR"

Publicado por Giancarlo Jose (46 intervenciones) el 02/03/2016 21:53:48
HOLA A TODOS !

- Tengo 2 problemas con mi cuadro EXCEL:

La Primera es que en el Campo "C2" Tiene la siguiente formula: =SI(NO( ESBLANCO(A2)),AHORA(),"") <-- Esta hace que al ingresar un dato te muestre LA FECHA o LA HORA "Dependiendo el formato de celda que se coloque", LA FORMULA FUNCIONA PERO CUANDO HAGO ALGÚN OTRO CAMBIO EN CUALQUIER CAMPO SE SIGUE ACTUALIZANDO Y SOLO QUIERO QUE SE INGRESE Y SE QUEDE "FIJO".

La Segunda es que en el Campo "E2 y O2" cada uno te muestra una hora de inicio y final "USANDO TAMBIÉN LA MISMA FORMULA DE ARRIBA" Lo que QUIERO ES QUE MUESTRE CUANTOS MINUTOS PASARON DESDE LA HORA INICIAL HASTA LA FINAL " SOLO MINUTOS " Y QUE ESTA SE MUESTRE EN EL CAMPO "P2"

ESPERO ME PUEDAN AYUDAR !!!

MUCHAS MUCHAS MUCHAS GRACIAS !!!!!!!
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

AYUDA !!! CON FORMULA "POR FAVOR"

Publicado por agustin (149 intervenciones) el 03/03/2016 09:19:04
Ahora mismo no tengo pc a mano y no entiendo cual es tu problema en el punto primero que expones ya que si la fórmula la pones en una celda y hace referencia a otra celda de manera estática es imposible que al cambiar otra celda de un resultado diferente a no ser que el valor de A2 se vea afectado al cambiar la otra celda en cuestión.
Con respecto al segundo punto, mira este enlace donde ya se trata y se dan varias soluciones: http://www.lawebdelprogramador.com/foros/Excel/1537012-Formulas-con-horas.html
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

AYUDA !!! CON FORMULA "POR FAVOR"

Publicado por Giancarlo Jose (46 intervenciones) el 03/03/2016 15:05:26
Estuve revisando el foro pero no es exactamente lo que busco.

Lo que necesito es:

Si en el Campo "C2" tengo mi hora inicial ejem: "08:58:00 am"
Y en el Campo "O2" tengo mi hora final ejem: "09:01:00 am"

Quiero que en el campo "P2" muestre en minutos el tiempo transcurrido agregando un texto "Han pasado 2 Minutos y 0 Segundos"


En el Campo "D2" tengo una formula como la que quiero pero solo me da la fecha:
=SIFECHA(C2,HOY(),"Y")&"Año(s), "&SIFECHA(C2,HOY(),"YM")&"Mes(es) y "&SIFECHA(C2,HOY(),"md")&"Día(s)"

Y Algo así es lo que necesito pero con el tiempo.

GRACIAS !!!
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

AYUDA !!! CON FORMULA "POR FAVOR"

Publicado por GMG (105 intervenciones) el 03/03/2016 13:57:17
Con macros, con algo así te valdría:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row < 2 Then Exit Sub
If Target.Column = 1 Then
 
    If Cells(Target.Row, 1) <> "" Then
    Cells(Target.Row, 3).Value = Date
    Cells(Target.Row, 5).Value = Now
    Else
    Cells(Target.Row, 3).Value = ""
    Cells(Target.Row, 5).Value = ""
    End If
 
End If
 
If Target.Column = 14 Then
 
    If Cells(Target.Row, 14) <> "" Then
    Cells(Target.Row, 15).Value = Now
    Cells(Target.Row, 16).FormulaR1C1 = "=TEXT(RC[-1]-RC[-11],""[m]"")"
    Else
    Cells(Target.Row, 15).Value = ""
    End If
 
End If
 
End Sub

Este código no lo debes poner en un módulo, sino en el código referente a la hoja USP.

Te adjunto tú documento con el código.

Tal y como está ahora, si borras el valor de una celda de la comuna A, te dejaría en blanco la celda de la misma fila de las columnas C y E

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

AYUDA !!! CON FORMULA "POR FAVOR"

Publicado por Giancarlo Jose (46 intervenciones) el 03/03/2016 14:59:41
Muchas Gracias !

Si Funciona !
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

AYUDA !!! CON FORMULA "POR FAVOR"

Publicado por GMG (105 intervenciones) el 03/03/2016 15:43:09
Nada.


Veo que has hecho otra consulta. Cambia en el código VBA :

1
Cells(Target.Row, 16).FormulaR1C1 = "=TEXT(RC[-1]-RC[-11],""[m]"")"

Por

1
Cells(Target.Row, 16).FormulaR1C1 = "=""Han pasado ""&TEXT(RC[-1]-RC[-11],""[m]"")& "" minutos y ""& TEXT(RC[-1]-RC[-11],""ss"")& "" segundos"""

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

AYUDA !!! CON FORMULA "POR FAVOR"

Publicado por Giancarlo Jose (46 intervenciones) el 03/03/2016 16:44:08
MAESTRO !!!

MUY MUY AGRADECIDO !!!

ÉXITOS Y BENDICIONES !!!
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

AYUDA !!! CON FORMULA "POR FAVOR"

Publicado por Giancarlo Jose (46 intervenciones) el 03/03/2016 17:51:15
GMG !

Una ultima consulta por favor !!!

TENGO UNA LISTA DESPEGALE EN EN CAMPO "M2" y el CAMPO "N2" me muestran las opciones que escojas en "M2" pero quiero que se vuelvan en blanco al cambiar el campo "M2"

Entonces...

Tengo la siguiente formula:

1
2
3
4
5
6
7
Private Sub Worksheet_Change(ByVal Target As Range)
 
If Target = Range("M2") Then
    Range("N2").Value = ""
End If
 
End Sub

Esta hace que se vuelva en blanco PERO SOLO 1 CAMPO y lo que quiero es agregarlo con tu código para que FUNCIONE EN TODA LA COLUMNA "M2 y N2"

Adicional mente, Una pregunta Doctor, habrá manera de grisear o bloquear todas las COLUMNA "C, E, O, P" esto para que no puedan modificar DATOS ??

MUCHAS GRACIAS DESDE YA POR TU AYUDA !
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

AYUDA !!! CON FORMULA "POR FAVOR"

Publicado por GMG (105 intervenciones) el 04/03/2016 13:58:54
Por partes:

La primera consulta:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row < 2 Then Exit Sub
If Target.Column = 1 Then
 
    If Cells(Target.Row, 1) <> "" Then
        Cells(Target.Row, 3).Value = Date
        Cells(Target.Row, 5).Value = Now
    Else
        Cells(Target.Row, 3).Value = ""
        Cells(Target.Row, 5).Value = ""
    End If
 
End If
 
If Target.Column = 14 Then
 
    If Cells(Target.Row, 14) <> "" Then
        Cells(Target.Row, 15).Value = Now
        Cells(Target.Row, 16).FormulaR1C1 = "=IF(RC[-1]<>"""",""Han pasado ""&TEXT(RC[-1]-RC[-11],""[m]"")& "" minutos y ""& TEXT(RC[-1]-RC[-11],""ss"")& "" segundos"","""")"
    Else
        Cells(Target.Row, 15).Value = ""
    End If
 
End If
 
If Target.Column = 13 Then
    Cells(Target.Row, 14).Value = ""
End If
 
End Sub

Con este código en principio lo resolveríamos (debes cambiar el primer código que te pasé por este), en tú código el problema es que hacias referencia a celdas concretas, y has de hacer referencia a toda la columna.

Para la segunda parte es posible mediante la opción protejer hoja, pero se debería implementar dentro del código, ya que deberíamos hacer que desbloqueara la hoja (las columnas que indicas), ejecutara el código VBA, y volviera a bloquear la hoja.

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

AYUDA !!! CON FORMULA "POR FAVOR"

Publicado por GMG (105 intervenciones) el 04/03/2016 14:11:21
Con lo de proteger hoja quedaría el código así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
Sub protegerhoja()
    Sheets("USP").Select
    ActiveSheet.Protect ("Contraseña")
End Sub
Sub Desprotegerhoja()
    Sheets("USP").Select
    ActiveSheet.Unprotect ("Contraseña")
End Sub
 
Private Sub Worksheet_Change(ByVal Target As Range)
 
Desprotegerhoja
 
If Target.Row < 2 Then Exit Sub
If Target.Column = 1 Then
 
    If Cells(Target.Row, 1) <> "" Then
        Cells(Target.Row, 3).Value = Date
        Cells(Target.Row, 5).Value = Now
    Else
        Cells(Target.Row, 3).Value = ""
        Cells(Target.Row, 5).Value = ""
    End If
 
End If
 
If Target.Column = 14 Then
 
    If Cells(Target.Row, 14) <> "" Then
        Cells(Target.Row, 15).Value = Now
        Cells(Target.Row, 16).FormulaR1C1 = "=IF(RC[-1]<>"""",""Han pasado ""&TEXT(RC[-1]-RC[-11],""[m]"")& "" minutos y ""& TEXT(RC[-1]-RC[-11],""ss"")& "" segundos"","""")"
    Else
        Cells(Target.Row, 15).Value = ""
    End If
 
End If
 
If Target.Column = 13 Then
    Cells(Target.Row, 14).Value = ""
End If
 
protegerhoja
 
End Sub

Pero has de hacer primero una cosa en la hoja:

Te vas a la pestaña USP
Seleccionas TODAS las celdas (en mi configuración con Ctrl+E vale)
Botón derecho, formato de celdas
Pestaña proteger
Desmarca la opción bloqueada

Selecciona las columnas "C, E, O, P" a la vez (si pulsas sobre la cabecera de una columna se selecciona entera, y con el ctrl pulsado te permite seleccionar diferentes columna a la vez)
Una vez seleccionadas
Botón derecho, formato de celdas
Pestaña proteger
Marca la opción bloqueada

Y en principio, cuando introduzcas un nuevo dato en la columna a, se protejeran automáticamente estas columnas.

En el código cambia la palabra contraseña por el password que quieras.

Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

AYUDA !!! CON FORMULA "POR FAVOR"

Publicado por Giancarlo Jose (46 intervenciones) el 04/03/2016 17:23:53
Hola muchas gracias por tu ayuda, esta un poco difícil ya que esos campos C D O P cambian automaticamente al ingresar datos en otros campos, entonces al bloquearlos ya no cambian.

Y me sale un mensaje de error de depurar, igual muchas gracias.

ME HAS AYUDADO UN MONTÓN !!!
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

AYUDA !!! CON FORMULA "POR FAVOR"

Publicado por agustin (149 intervenciones) el 04/03/2016 19:43:16
En las opciones de bloquear se soluciona eso.
Por otro lado, el código que te ha ofrecido esta muy bien pero para optimizar más el código cambia los condicionales que comprueban Target.Column por un switch ya que en ese código comprobará todos los condicionales aunque se cumpla el primero y no es necesario. O en su defecto cambia por If ElseIf ...
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