Realce quais planilhas no Excel 2016 contêm um valor positivo em uma célula específica

0

Eu tenho um conjunto de várias centenas de folhas de trabalho idênticas, mas cada uma contendo dados diferentes. Eu quero listar todas as planilhas onde, por exemplo, célula E532 = 1 ou E532 > 0. Isso pode ser feito? E se sim, como? Se isso ajudar, eu tenho o Kutools instalado.

Muito obrigado.

    
por BigStevie1973 14.07.2017 / 16:47

2 respostas

0

Experimente:

Sub LookFor()
    Dim msg As String, addy As String, v As Variant
    Dim w As Worksheet
    msg = ""
    addy = Application.InputBox(Prompt:="enter cell address", Type:=2)
    v = Application.InputBox(Prompt:="enter cell value", Type:=3)

    For Each w In Worksheets
        If w.Range(addy) = v Then
            msg = msg & vbCrLf & w.Name
        End If
    Next

    If msg = "" Then
        MsgBox "nothing found"
    Else
        MsgBox msg
    End If
End Sub
    
por 15.07.2017 / 22:10
0

O Subprocedimento do VBA a seguir identificará os nomes das planilhas na pasta de trabalho ativa que contêm um valor maior que 0 na célula E532. Os nomes das planilhas serão exibidos na janela Immediate. Além disso, a cor da guia da planilha será alterada para amarelo.

Sub ListWorksheets()

For Each ws In Worksheets
    TestValue = ws.Range("E532").Value
    If (TestValue > 0) Then
      Debug.Print ws.Name
      ws.Tab.ColorIndex = 6
    End If
Next ws

End Sub

Para criar uma lista de planilhas que atendam aos critérios, crie uma nova planilha e execute a macro a seguir. Uma lista das planilhas será exibida iniciando na célula que está ativa quando a macro é executada.

Sub ListWorksheetsAtActiveColumn()

'Defines the row offset of the current cell to list the worksheets
Dim RowNumber As Long

RowNumber = 0

For Each ws In Worksheets
    TestValue = ws.Range("E532").Value
    If (TestValue > 0) Then
      Debug.Print ws.Name
      'Changes the color of the worksheet tab to yellow
      ws.Tab.ColorIndex = 6
      'Creates a list of worksheet names that meet the test starting
      'at the current cell
      ActiveCell.Offset(RowNumber, 0).Value = ws.Name
      RowNumber = RowNumber + 1
    End If
Next ws

End Sub
    
por 14.07.2017 / 18:04