Excel - Ayuda con condicionales macros

   
Vista:

Ayuda con condicionales macros

Publicado por Gustavo Roy (2 intervenciones) el 16/03/2015 04:25:30
Estimados señores buenas, felicidades por el foro.

Les escribo para solicitar su ayuda en lo siguiente:

En un laboratorio "y" se hizo análisis a un aceite "x", se tiene el parámetro "oxidación" al cual se le hicieron 4 pruebas en distintos tiempos, y se tiene un indicador "alarma" (adjunto imagen)


alarma

La norma indica que para "oxidación" el resultado debería ser menor a 3 "normal"; si el resultado es igual mayor a 3 pero menor a 5 significa "alerta" ; y si el resultado es mayor igual a 5 significa "peligro" (cambio de aceite)

Lo que quiero es que al hacer click indistintamente en las celdas de resultados, por ejemplo resultado 1 celda "E16", se compare este valor con lo que especifica la norma; que se active la celda alarma "I16" y que este escrita la condición de normal, alerta o peligro según el valor comparado; la celda alarma "I16" debería de cambiar al hacer click en las demás celdas resultado 2, 3 o 4 según el valor de éstas y su comparación con la norma; en el caso que al seleccionar la celda resultado 1, 2,3 o 4 y no haya un valor la celda alarma "I16" quede vacía. Espero haberme explicado lo mejor posible !


Alguien podría ayudarme como poder lograr esto?

Desde ya 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 condicionales macros

Publicado por Martin (9 intervenciones) el 16/03/2015 20:58:35
El problema es interesante. Primero, las celdas sobre las que evaluarás en caso de doble click (resultados 1,2,3 y 4 según tu ejemplo) deberían estar dentro de un rango definido. Para esta solución tomé las 4 columnas que pasaste, y las filas desde la 16 hasta la 1000.
Luego, todas las celdas relativas se refieren al ejemplo que pasaste.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim ResRange As Range, LowValue As Range, HighValue As Range
 
    'Se definen las variables de range para el resultado, el valor piso y el valor techo.
    Set ResRange = Target.EntireRow.Cells(9)
    Set LowValue = Target.EntireRow.Cells(3)
    Set HighValue = Target.EntireRow.Cells(4)
 
    'Se evalua si la celda sobre la que se dio doble click está dentro del rango "evaluable"
    If (Target.Column >= 5 And Target.Column <= 8) And (Target.Row >= 16 And Target.Row <= 1000) Then
        Select Case Target.Value 'Según el valor de la celda
            Case Empty 'Si es vacío
                ResRange.Value = Empty 'El resultado es vacío
            Case Is < LowValue 'Si es menor al valor piso
                ResRange.Value = "Normal" 'El resultado es Normal
            Case Is < HighValue 'Si es menor al valor techo
                ResRange.Value = "Alerta" 'El resultado es Alerta
            Case Else 'Luego, si no es ninguna de las anteriores
                ResRange.Value = "Alarma" 'El resultado es Alarma
        End Select
        Cancel = True 'Se desactiva la edición de la celda
    End If
End Sub

Este código debe ir en el módulo de objeto de la hoja.

Luego me cuentas si te sirvió
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 condicionales macros

Publicado por gustavo (2 intervenciones) el 17/03/2015 05:23:20
Estimado Martín; gracias por tu interés y por responder mi pregunta

La macro funciona muy bien para el ejemplo que coloque. Trabajo en un laboratorio estoy tratando de crear un formato que sea atendible para personal fuera de laboratorio , ya aplique la macro al formato que estoy creando y todo bien (Y)

Muchas gracias, me fue de gran 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 condicionales macros

Publicado por CoquitoPe (58 intervenciones) el 18/03/2015 18:33:40
Un saludo...
Interesante... podemos poner color y dobleclick desde el lugar que querramos...?
veamos... si funciona...

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim intColum, intFila As Integer
Dim strCaso, strSitua As String
Dim sinColor As Single
intFila = Target.Row
Do
strCaso = "": sinColor = 5296274: strSitua = ""
For intColum = 5 To 8
Select Case Val(Cells(intFila, intColum))
Case 0
strCaso = strCaso & " ": Cells(intFila, intColum).Interior.color = 0:
Case Is < 3.1
strCaso = strCaso & "N"
If strSitua = "" Then strSitua = "Normal"
Cells(intFila, intColum).Interior.color = 5296274
Case Is < 5.1
strCaso = strCaso & "A"
If sinColor = 5296274 Then sinColor = 65535: strSitua = "Alerta"
Cells(intFila, intColum).Interior.color = 65535
Case Else
strCaso = strCaso & "R"
If sinColor = 5296274 Or sinColor = 65535 Then sinColor = 255: strSitua = "Riesgo"
Cells(intFila, intColum).Interior.color = 255
End Select
Next
Cells(intFila, 9) = strSitua: Cells(intFila, intColum).Interior.color = sinColor: Cells(intFila, 10) = strCaso
intFila = intFila + 1
Loop While Cells(intFila, 5) <> "" Or Cells(intFila, 6) <> "" Or Cells(intFila, 7) <> "" Or Cells(intFila, 8) <> ""
End Sub

bye
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