Como posso pesquisar por SearchFormat no texto curinga do Excel?

Como posso pesquisar por SearchFormat no texto curinga do Excel?

Por exemplo, existem 100 (linha) x 20 (coluna) células em uma planilha e cada célula possui 5 linhas. Algumas linhas estão em vermelho, outras estão marcadas com riscado, etc. Como posso pesquisar todas as linhas em vermelho? Como posso encontrar todas as linhas tachadas? Como posso pesquisar apenas por SearchFormat?

Já tentei o Excel find with format, mas não funciona para parte de uma célula. Se todas as 5 linhas estiverem em vermelho, ele poderá localizá-las; mas se apenas 2 linhas em vermelho e outras 3 linhas forem normais, ele não conseguirá encontrar as 2 linhas, mesmo quando match entire cell contentsfornãoverificado.

Responder1

Você precisará de uma VBAsolução para isso:

Aqui está um exemplo de macro para você começar, que pesquisa na planilha ativa (começando em uma célula à direita da célula ativa) por células contendo constantes de texto e, em seguida, pesquisa o texto na célula, um caractere por vez, para Vermelho. Ele para e seleciona a primeira célula que encontra que contém algum texto em vermelho

Sub FindColorInCells()
    Dim n As Long
    Dim i As Long, j As Long
    Dim cl As Range
    Dim r As Range

    Set r = ActiveSheet.UsedRange
    i = ActiveCell.Row - r.Row + 1
    If i > r.Rows.Count Or i < 0 Then i = 1
    j = ActiveCell.Column - r.Column + 1
    If j > r.Columns.Count Or j < 0 Then j = 1
    i = (r.Columns.Count * (i - 1) + j) Mod r.Cells.Count + 1
    j = r.Cells.Count
    Do While i <> j
        With r(i)
            If Not .HasFormula Then
                If Len(.Value) > 0 Then
                    If TypeName(.Value) = "String" Then
                        For n = 1 To .Characters.Count
                            If .Characters(n, 1).Font.ColorIndex = 3 Then
                                ' found red
                                .Select
                                Exit Sub
                            End If
                        Next
                    End If
                End If
            End If
        End With
        i = i Mod j + 1
    Loop
End Sub

informação relacionada