Fórmula detectar error en 4 columnas

Pregunto:

Tengo cuatro columnas (E, F, G, H) y necesito saber, si en la cuatro columnas pone lo mismo, o entre ella hay algún error o alguna vacía

EJ:

Columna E, pone valencia

Columna F, pone valencia

Colunma G, pone valenTia

Columna H, pone valencia

Necesito que me diga que no son iguales, o si fueran iguales que me dijera que lo son ( con un OK, o un No OK me valdría)

Respuesta
1

La forma que se me ocurre es que ingreses una macro con for each en el modulo de la hoja pero te estarían apareciendo carteles de correcto o incorrecto cada ves que cambias de celda en ese rango =/

Quizás haya alguna otra forma que yo desconozco

La otra opción seria con la siguiente macro

Sub compararRangos()
'Compara el contenido de cuatro rangos de valores
'
Dim fila As Long
Dim columna As Long
Dim nFilas As Long
Dim nColumnas As Long
Dim rango1 As Range
Dim rango2 As Range
Set rango1 = Application.InputBox("Rango de entrada 1", Type:=8)
Set rango2 = Application.InputBox("Rango de entrada 2", Type:=8)
Set rango3 = Application.InputBox("Rango de entrada 3", Type:=8)
Set rango4 = Application.InputBox("Rango de entrada 4", Type:=8)
nFilas = rango1.Rows.Count
nColumnas = rango1.Columns.Count
For fila = 1 To nFilas
    For columna = 1 To nColumnas
        If rango1.Cells(fila, columna) <> rango2.Cells(fila, columna) Or rango1.Cells(fila, columna) <> rango3.Cells(fila, columna) Or rango1.Cells(fila, columna) <> rango4.Cells(fila, columna) Then
            rango1.Cells(fila, columna).Interior.ColorIndex = 36
            rango2.Cells(fila, columna).Interior.ColorIndex = 36
            rango3.Cells(fila, columna).Interior.ColorIndex = 36
            rango4.Cells(fila, columna).Interior.ColorIndex = 36
            'MsgBox "El valor de " & rango1.Address & " no coinciden con " & rango2.Address & " , " & rango3.Address & " ni " & rango4.Address
            ' MsgBox "El valor de " & rango1.Cells(fila, columna).Address & " no coinciden con " & rango2.Cells(fila, columna).Address & " , " & rango3.Cells(fila, columna).Address & " ni " & rango4.Cells(fila, columna).Address
         Else: MsgBox "Todas los rangos coinciden", vbInformation, "Comparacion de rangos"
End If
    Next columna
Next fila
End Sub

La cual tu ingresas en 4 imputbox los rangos a comparar y sino son iguales se pintaran de amarillo

como tu quieres que sean iguales los puse que todos sean igual al primero

Le coloque 2 msgbox desactivados

El primero te dice el rango que escribiste si alguno no coincide

El segundo te va mostrando celda por celda cuales no coinciden si alguno te parece útil actívalo

Al momento de escribir el rango te recomendaría que seas especifico, osea no pongas en cada imputbox la fila entera (por ejemplo (F:F)) si lo que si quieres analizar las 100 primeras filas pon "F1:F100" te sera más ágil tu revisión ...

Saludos espero te sirva =)

Ostras, no he hecho una fórmula así jamas, no tengo ni idea, pensaba que con una fórmula =SI o =igual se podría

Ah pero esto no es una formula es una macro =) la cual la insertas con ALT+F11

Vas a pestaña Insertar, eliges la opción "Modulo"

Dentro del mismo pegas todo el código que te envíe arriba

Después situado sobre la hoja que quieres comparar tecleas ALT+F8 y elijes la macro "Comparar rangos" y le das a ejecutar

O puedes agregar una Autoforma o botón(si sabes como hacerlo) sino agrega una simple autoforma

Agregas una Autoforma (ejemplo un cuadrado =) ) y hacer click derecho sobre la misma, eliges "Asignar macro" y click en la macro "Comparar" y le das click a "Aceptar"

Espero te sirva compañero =)

Estaba probando con fórmulas que es lo que tu pedías

Podrías hacer algo así, pegas la siguiente fórmula en una columna por ejemplo en la columna "I" que es la que le sigue a tus columnas

=SI(Y((E1=F1);(E1=G1);(E1=H1);(G1=E1);(H1=E1));"OK";"ALGO ESTA MAL")

Y desplazar la fórmula hacia abajo para que se vaya copiando

Después creas 2 formato condicional de texto especifico y le aclaras

A una le dices que si en la fila donde va a estar esa fórmula dice "Ok" entonces que te la pinte de verde

Y en la otra le dices que si en la fila donde va a estar esa fórmula dice "Algo esta mal" entonces que te la pinte de naranja

Y te quedaría algo así

Pienso que te sera mas practico eso que anda ejecutando macros sino sabes usarlas =\

Aiii Perfecto!! ya lo tengo!

Muchas gracias

De nada compañero me alegro que mi aporte te haya servido =)

1 respuesta más de otro experto

Respuesta

Este es el resultado de la macro

y esta es la macro

Sub contar_palabras()
Dim unicos As New Collection
Set datos = Range("e1").CurrentRegion
With datos
    r = .Rows.Count: c = .Columns.Count
    For i = 1 To r
        Set unicos = Nothing
        For j = 1 To c
            palabra = .Cells(i, j)
            On Error Resume Next
            unicos.Add palabra, CStr(palabra)
            On Error GoTo 0
        Next j
        If unicos.Count = c Then cuenta = 0: Total = 0: GoTo sig
        Total = 0
        For k = 1 To unicos.Count
            palabra = unicos.Item(k)
            cuenta = WorksheetFunction.CountIf(.Rows(i), palabra)
            If cuenta > 1 Then
            For m = 1 To cuenta
                If m = 1 Then Set busca = .Rows(i).Find(palabra)
                If m > 1 Then Set busca = .Rows(i).FindNext(busca)
                Range(busca.Address).Interior.ColorIndex = 4
            Next m
sig:
                If k = 1 Then Total = cuenta
                If k > 1 Then Total = cuenta + Total
                .Cells(i, c + 3) = Total & " repetidos"
            .Cells(i, c + 2) = WorksheetFunction.CountBlank(.Rows(i)) & " celdas vacias"
            End If
        Next k
    Next i
End With
Set datos = Nothing
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas