Applies ToExcel para Microsoft 365 Excel na Web

Os tipos de dados ligados foram lançados pela primeira vez no Excel para Microsoft 365 de junho de 2018 e, como tal, outras funcionalidades poderão não conseguir identificá-los. Isto pode ser especialmente verdadeiro quando pretender utilizar outras funcionalidades para identificar condicionalmente se uma célula contém ou não um tipo de dados ligados. Este artigo explica algumas sões que pode utilizar para identificar tipos de dados ligados em células.

Nota: Os tipos de dados ligados só estão disponíveis para clientes Multi-inquilino Global (contas de Microsoft 365 padrão).

Fórmulas

Pode sempre escrever fórmulas que fazem referência a tipos de dados. No entanto, se quiser extrair o texto de uma célula com um tipo de dados ligado com a função TEXTO, obterá uma #VALUE! #CAMPO!.

Uma forma de resolver este problema é utilizar a função VALORDO CAMPO e especificar o campo Nome para o field_name campo. No exemplo seguinte, se a célula A1 contiver um tipo de dados de ações, a fórmula devolverá o nome das ações.

=VALORDO CAMPO(A1,"Nome")

No entanto, se a célula A1 não contiver um tipo de dados ligado, a função VALORDO CAMPO irá devolver um #FIELD!.. Se pretender avaliar se uma célula contém ou não um tipo de dados ligado, pode utilizar a seguinte fórmula, que utiliza a função É.ERRO para testar se a função VALORDO CAMPO devolverá um erro.

=SE(É.TEXTO(VALORDO CAMPO(A2,"Nome")),"Esta célula não tem um tipo de dados ligado","Esta célula tem um tipo de dados ligado")

Se a fórmula devolver um erro, irá devolver o texto "Esta célula não tem um tipo de dados ligado", caso contrário, devolve "Esta célula tem um tipo de dados ligado".

Se quiser simplesmente suprimir o #FIELD! , pode utilizar:

=SE.TEXTO(VALORDO CAMPO(A1,"Nome"),"")

Esta ação irá devolver uma célula em branco se houver um erro.

Formatação condicional

Pode formatar condicionalmente uma célula com base no facto de ter ou não um tipo de dados ligados. Primeiro tem de selecionar as células que precisam da formatação condicional e, em seguida, ir para a Home > condicional formatação > Nova Regra > Utilizar uma fórmula... Para a fórmula, deve utilizar o seguinte:

=NÃO(É.ROR(VALORDO CAMPO(A1;"Nome")))

Em que célula A1 é a primeira célula no intervalo que pretende avaliar. Em seguida, aplique o formato que pretende.

Neste exemplo, se a célula A1 contiver um nome de campo válido para "Nome", a fórmula devolve VERDADEIRO e a formatação será aplicada. Se a célula A1 não contiver um tipo de dados ligado, a fórmula devolve FALSO e não será aplicada formatação. Pode remover a insuceção NÃO se, em alternativa, quiser realçar células que não contenham tipos de dados ligados válidos.

VBA

Existem vários métodos de VBA (Visual Basic for Applications) que pode utilizar para identificar se uma célula ou intervalo contém tipos de dados ligados. Este primeiro procedimento utiliza a propriedade HasRichDataType. 

Ambos os procedimentos pedirão para selecionar um intervalo de células a avaliar e, em seguida, devolver uma caixa de mensagem com os resultados.

Sub IsLinkedDataType()
    Dim c As Range
    Dim rng As Range
    Dim strResults As String
    
    Set rng = Application.InputBox("Select a range to check for linked data types", Type:=8)
    
    For Each c In rng
      '    Check if the HasRichDataType is TRUE or FALSE
        If c.HasRichDataType = True Then
        '   The cell holds a linked data type
            strResults = strResults & c.Text & " - Linked data type" & vbCrLf
        Else
            strResults = strResults & c.Text & " - Not a linked data type" & vbCrLf
        End If
    Next c

    MsgBox "Your range contains the following details" & vbCrLf & vbCrLf & strResults, vbInformation + vbOKOnly, "Results"
    
End Sub

Este procedimento seguinte utiliza a propriedade LinkedDataTypeState.

Sub IsLinkedDataTypeState()
    Dim c As Range
    Dim rng As Range
    Dim strResults As String
    
    Set rng = Application.InputBox("Select a range to check for linked data types", Type:=8)
    
    For Each c In rng
   '    Check if the LinkedDataTypeState is 1 (TRUE) or 0 (FALSE)
        If c.LinkedDataTypeState = 1 Then
        '   The cell holds a linked data type
            strResults = strResults & c.Text & " - Linked data type" & vbCrLf
        Else
            strResults = strResults & c.Text & " - Not a linked data type" & vbCrLf
        End If
    Next c
    
   MsgBox "Your range contains the following details" & vbCrLf & vbCrLf & strResults, vbInformation + vbOKOnly, "Results"

End Sub

Este respetivo reto de código final é uma função definida pelo utilizador (UDF) e referencia-o como qualquer outra Excel fórmula. Basta introduzir =fn_IsLinkedDataType(A1),em que A1 é a célula que pretende avaliar.

Public Function fn_IsLinkedDataType(c As Range)
'   Function will return TRUE if a referenced cell contains a linked data type
    If c.HasRichDataType = True Then
      fn_IsLinkedDataType = "Linked data type"
    Else
        fn_IsLinkedDataType = "Not a linked data type"
    End If
End Function

Para utilizar qualquer um destes exemplos, prima Alt+F11 para abrir o Editor de Visual Basic (VBE) e, em seguida, vá a Inserir módulo> e cole o código na nova janela que é aberta à direita. Pode utilizar Alt+Q para voltar ao Excel quando terminar. Para executar um dos dois primeiros exemplos, vá ao separador Programador > Código > Macros > selecione a macro que pretende executar a partir da lista e, em seguida, selecione Executar.

Precisa de mais ajuda?

Pode sempre colocar uma pergunta a um especialista da Comunidade Tecnológica do Excel ou obter suporte nas Comunidades.

Precisa de mais ajuda?

Quer mais opções?

Explore os benefícios da subscrição, navegue em cursos de formação, saiba como proteger o seu dispositivo e muito mais.

As comunidades ajudam-no a colocar e a responder perguntas, a dar feedback e a ouvir especialistas com conhecimentos abrangentes.