Marcar celdas que tiene el mismo valor

Sorry que esta pregunta ya la había realizado, pero aún no he logrado el resultado que deseo.

En esta hoja Hoja3 (2) deseo marcar de color amarillo todos los valores que sean iguales y que estén en el lado contrario, como los marcados en imagen, y que además en la columna J se coloque a Número corresponde la marcación, como en este caso el Egreso 17049 corresponde al diario 22452 y el diario 22452 corresponde al egreso 17049.

También es importante verificar que los valores idealmente correspondan a un mismo mes, o un mismo año, para evitar errores.

1 Respuesta

Respuesta
1

Al parecer, apenas estás diseñando tu hoja y estás variando el lugar de los datos.

Hice un ajuste la macro para poner la fila inicial de tus datos, en tu imagen empiezan en la fila 14.

Prueba esto:

Sub Marcar_Celdas()
'Por.Dante Amor
  Dim a As Variant, b As Variant
  Dim i As Long, j As Long, u As Long
  Dim r As Range
  Dim fila As Long  'fila inicial de datos
  '
  fila = 14
  u = Range("A" & Rows.Count).End(3).Row
  Range("A" & fila & ":I" & u).Interior.Color = xlNone
  Range("E" & fila & ":E" & u) = ""
  a = Range("A" & fila & ":G" & u).Value2
  ReDim b(1 To UBound(a), 1 To 1)
  Set r = Range("A" & u + 1 & ":I" & u + 1)
  '
  For i = 1 To UBound(a, 1)
    For j = i + 1 To UBound(a, 1)
      If Month(a(i, 1)) = Month(a(j, 1)) And _
         a(i, 6) = a(j, 7) And a(i, 7) = a(j, 6) Then
          b(i, 1) = a(j, 3)
          b(j, 1) = a(i, 3)
          Set r = Union(r, Range("A" & i + fila - 1).Resize(1, 9), Range("A" & j + fila - 1).Resize(1, 9))
          Exit For
      End If
    Next
  Next
  '
  r.Interior.Color = vbYellow
  Range("A" & u + 1 & ":I" & u + 1).Interior.Color = xlNone
  Range("I" & fila).Resize(UBound(a, 1)).Value = b
End Sub

Gracias Dante, pero al ejecutar me aparece " No Coinciden los tipos" ¿Qué puede ser ?

¿Alguna línea de la macro se resalta en algún color?

¿Cambiaste algo en la macro?

Me resaltaba la parte del If Month la otra vez, y no, no le cambié nada.

Revisa los siguientes puntos:

- Debes tener fechas en la columna A

- Si tienes textos que *parecen fecha*, la macro no podrá identificar el mes de ese texto.

- Según tu imagen los datos deben empezar en la fila 14

- Al final de los datos de la columna A, ¿tienes otros datos que no sean fecha?

De todos los puntos mencionados, la columna A sí tiene otros datos que no son fecha, y la fecha debería ser fecha porque con datos los transformo antes de iniciar la macro, ya que desde donde se importan si llegan como texto.

La columna A sí tiene otros datos que no son fecha

Son puntos que debes mencionar en tu pregunta inicial, para considerarlos en el desarrollo de la macro. Ya que en tu imagen solamente se ven fechas, entonces no es posible que yo lo pueda saber.


Te anexo el código ajustado (copia todo el código), prueba nuevamente:

Sub Marcar_Celdas()
'Por.Dante Amor
  Dim a As Variant, b As Variant
  Dim i As Long, j As Long, u As Long
  Dim r As Range
  Dim fila As Long  'fila inicial de datos
  '
  fila = 14
  u = Range("A" & Rows.Count).End(3).Row
  Range("A" & fila & ":I" & u).Interior.Color = xlNone
  Range("E" & fila & ":E" & u) = ""
  a = Range("A" & fila & ":G" & u).Value
  ReDim b(1 To UBound(a), 1 To 1)
  Set r = Range("A" & u + 1 & ":I" & u + 1)
  '
  For i = 1 To UBound(a, 1)
    For j = i + 1 To UBound(a, 1)
      If IsDate(a(i, 1)) And IsDate(a(j, 1)) Then
        If Month(a(i, 1)) = Month(a(j, 1)) And _
           a(i, 6) = a(j, 7) And a(i, 7) = a(j, 6) Then
            b(i, 1) = a(j, 3)
            b(j, 1) = a(i, 3)
            Set r = Union(r, Range("A" & i + fila - 1).Resize(1, 9), Range("A" & j + fila - 1).Resize(1, 9))
            Exit For
        End If
      End If
    Next
  Next
  '
  r.Interior.Color = vbYellow
  Range("A" & u + 1 & ":I" & u + 1).Interior.Color = xlNone
  Range("I" & fila).Resize(UBound(a, 1)).Value = b
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas