MACRO CON EVENTO que compara 2 columnas y da comentario en columna "RESULTADO".

Dante Amor, he tratado de hacer una MACRO CON EVENTO de tal manera que al recorrer las celdas de la columna "CODIGO" (col. "B"), la MACRO compare la celdas de la columna "DATOS1" con los datos de la columna "DATOS2", y si son iguales, se escriba "ok" (en letra roja, negrita y tamaño 14), y si son diferentes se escriba "CAMBIAR" (en letra azul, negrita y tamaño 14) estas palabras van en la columna "RESULTADO". Como se muestra en la figura

Los datos comienzan en la celda B5, como hacer para que al poner el cursor en la celda B1 no se active la MACRO osea que solo se active a partir de la fila 5

A continuacion te muestro mi macro para que me ayudes en su correccion

'compara dos columnas y muestra comentario en columna "resultado"
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
Cells.Interior.ColorIndex = 0
Target.EntireRow.Interior.ColorIndex = 42
    If Not Intersect(Target, Columns("B")) Is Nothing Then
        If Target.Count > 1 Then Exit Sub
            RESULTADO = Cells(Target.Row, "F")
            VALOR = Cells(Target.Row, "D") - Cells(Target.Row, "E")
            If VALOR = 0 Then
                RESULTADO = 'ok'
            Else
                RESULTADO = 'CAMBIAR'
            End If
    End If
End Sub

Aqui esta el link de mi archivo

https://drive.google.com/file/d/0B4OmkP08K7UZMG9sVHZfRFh5Q28/view?usp=sharing 

2 Respuestas

Respuesta
3

H o l a:

Quedaría de esta forma:

'compara dos columnas y muestra comentario en columna "resultado"
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Row < 5 Then Exit Sub
    If Target.Count > 5 Then Exit Sub
    Cells.Interior.ColorIndex = 0
    If Not Intersect(Target, Columns("B")) Is Nothing Then
        Target.EntireRow.Interior.ColorIndex = 42
        If Cells(Target.Row, "D") = "" Or Cells(Target.Row, "E") = "" Then Exit Sub
        If Cells(Target.Row, "D") - Cells(Target.Row, "E") = 0 Then
            With Cells(Target.Row, "F")
                .Value = "ok"
                .Font.ColorIndex = 3
                .Font.Size = 14
            End With
        Else
            With Cells(Target.Row, "F")
                .Value = "CAMBIAR"
                .Font.ColorIndex = xlAutomatic
                .Font.Size = 11
            End With
        End If
    End If
End Sub

Muchas gracias por la MACRO funciona correctamente por favor cual seria la modificacion si se quiere aceptar como valido osea "ok" un aproximado del 10% (diez por ciento) considerando como dato fijo la columna "DATO1" y como dato aproximado la columna "DATO2", como ejemplo tomamos la fila 6

evaluamos la fila 5

donde D5 = 50, entonces el limite superior sera + 10% (5) = 55 y el limite inferior sera - 10% (-5) = 45, por lo tanto D5 = 50, puede aceptar como dato aceptable el rango de numeros entre 45 a 55.

Como en el cuadro del ejemplo el valor de E5 = 55, la nueva respuesta en la columna "RESULTADO" seria "ok".

Dante por favor cual seria la correccion de la MACRO, saludos, JOHNMOR41

Macro actualizada

'compara dos columnas y muestra comentario en columna "resultado"
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Row < 5 Then Exit Sub
    If Target.Count > 5 Then Exit Sub
    Cells.Interior.ColorIndex = 0
    If Not Intersect(Target, Columns("B")) Is Nothing Then
        Target.EntireRow.Interior.ColorIndex = 42
        If Cells(Target.Row, "D") = "" Or Cells(Target.Row, "E") = "" Then Exit Sub
        'res = Cells(Target.Row, "D") - Cells(Target.Row, "E")
        vmi = Cells(Target.Row, "D") - Cells(Target.Row, "D") * 0.1
        vma = Cells(Target.Row, "D") + Cells(Target.Row, "D") * 0.1
        If Cells(Target.Row, "E") >= vmi And Cells(Target.Row, "E") <= vma Then
            With Cells(Target.Row, "F")
                .Value = "ok"
                .Font.ColorIndex = 3
                .Font.Size = 14
            End With
        Else
            With Cells(Target.Row, "F")
                .Value = "CAMBIAR"
                .Font.ColorIndex = xlAutomatic
                .Font.Size = 11
            End With
        End If
    End If
End Sub

¡Gracias! EXCELENTE respuesta tu MACRO funciona muy bien, muchas gracias, JOHNMOR41

R ecuerda cambiar la valoración a mi respuesta.

Respuesta

Te paso un ejemplo deberías adaptarla un poco, pero hace lo que requieres.

http://www.programarexcel.com/2014/09/recorre-columna-y-copia-datos-en.html 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas