Como posso pesquisar por SearchFormat no texto curinga no Excel?

2

Por exemplo, há 100 (linha) x 20 (coluna) células em uma folha e cada célula tem 5 linhas. Algumas linhas estão em vermelho, outras estão marcadas com "strike-through" etc. Como posso pesquisar todas as linhas em vermelho? Como posso encontrar todas as linhas com passagem? Como posso pesquisar somente por SearchFormat ?

Eu tentei o Excel find with format , mas ele não funciona para parte de uma célula. Se todas as 5 linhas estiverem em vermelho, elas poderão ser encontradas; mas se apenas 2 linhas em vermelho e outras 3 linhas forem normais, não será possível encontrar as 2 linhas, mesmo quando match entire cell contents for não verificado.

    
por Landy 07.02.2012 / 08:33

1 resposta

3

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

Aqui está uma macro de exemplo para você começar, que pesquisa a planilha ativa (iniciando em uma célula à direita da célula ativa) para células contendo constantes de texto e, em seguida, pesquisa o texto na célula um caractere por vez para Red . Para e seleciona a primeira célula encontrada que contém algum texto 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
    
por 07.02.2012 / 12:30