Resaltar valores de hoja 2 en hoja 1

Tengo varios valores numéricos en la hoja 1 rango "az1:bw37" y tengo un listado de números en la hoja 2 columna "AL" y necesito resaltar esos valores

2 Respuestas

Respuesta
1

Respondiendo a tu consulta inicial, esta macro lo resuelve:

Sub detecta()
'x Elsamatilde
    Application.ScreenUpdating = False
    Sheets("hoja1").Select
    'guarda el rango ocupado en Hoja1
    rgo = ActiveSheet.UsedRange.Address
    'quita colores anteriores
    Range(rgo).Select
    With Selection.Interior
        .Pattern = xlNone
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    Set uno = Worksheets("hoja1")
    'se recorre la lista de Hoja2, col AL
    Sheets("Hoja2").Select
    For i = 1 To Range("AL" & Rows.Count).End(xlUp).Row
        'se busca el valor en el rango de Hoja1
        dato = Range("AL" & i)
        Set busco = uno.Range(rgo).Find(dato, LookIn:=xlValues, lookat:=xlWhole)
        If Not busco Is Nothing Then
            'si lo encontró pinta la celda
            With uno.Range(busco.Address).Interior
                .Pattern = xlSolid
                .PatternColorIndex = xlAutomatic
                .ThemeColor = xlThemeColorAccent4
                .TintAndShade = 0.399975585192419
                .PatternTintAndShade = 0
            End With
        End If
    Next i
    Range("AL1").Select
    MsgBox "Fin del proceso.", , "Información"
End Sub

Guiate por los comentarios para hacer algún tipo de ajuste en la ubicación de datos.

En Hoja1 se encuentra el rango ocupado y en Hoja2 se estableció col AL desde fila 1 hasta la última ocupada.

Se considera que no habrá números duplicados en Hoja1.

Sdos y no olvides valorar la respuesta.

Elsa

http://aplicaexcel.com

Respuesta
1

Podrías poner un formato condicional con la fórmula contar. Si, cosa que si el contar. Si es >0 (1 o más), entonces que "pinte" la celda de algún color.

La verdad lo necesito en código macro

Podrías hacer un código que vaya recorriendo cada celda y haga lo que te digo, pero sería mucho más lento por la iteración por todas las celdas.

Tengo este código y hace lo esperado, pero lo podríamos modificar, para que se ejecutara automáticamente con valores del siguiente rango hoja 2 columna "o"

Sub detecta()
    Application.ScreenUpdating = False
    Set uno = Worksheets("hoja1")
    Sheets("hoja1").Select
    Cells.Select
    With Selection.Interior
        .Pattern = xlNone
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    ActiveCell.SpecialCells(xlLastCell).Select
    r = ActiveCell.Row
    c = ActiveCell.Column
    For xc = 1 To c
        For xr = 1 To r
            If Len(Cells(xr, xc)) > 0 Then
                Cells(xr, xc).Select
                igual = Application.WorksheetFunction.CountIf(Worksheets("Hoja2").Range("c:c"), ActiveCell.Value)
                If igual > 0 Then
                    With Selection.Interior
                        .Pattern = xlSolid
                        .PatternColorIndex = xlAutomatic
                        .ThemeColor = xlThemeColorAccent4
                        .TintAndShade = 0.399975585192419
                        .PatternTintAndShade = 0
                    End With
                End If
            End If
        Next
    Next
    Range("A1").Select
End Sub

Probaste cambiando la instrucción

igual = Application.WorksheetFunction.CountIf(Worksheets("Hoja2").Range("c:c"), ActiveCell.Value)

por esta otra

igual = Application.WorksheetFunction.CountIf(Worksheets("Hoja2").Range("o:o"), ActiveCell.Value)

básicamente cambié la columna C por la O

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas