Utilizar outras funcionalidades para identificar tipos de dados ligados

Os tipos de dados ligados foram lançados noExcel para o Office 365 em junho de 2018 e, como tal, as 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 um tipo de dados ligado ou não. Este artigo explica algumas soluções que pode utilizar para identificar tipos de dados ligados em células.

Fórmulas

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

Uma solução é utilizar a função campovalue e especificar o campo nome para o argumento field_name . No exemplo seguinte, se a célula a1 contiver um tipo de dados de stock, a fórmula devolveria o nome do estoque.

= CAMPO (A1; "nome")

No entanto, se a célula a1 não contiver um tipo de dados ligado, a função CAMPOvalue irá devolver um erro #FIELD!. Se pretender avaliar se uma célula contém um tipo de dados ligado, pode utilizar a fórmula seguinte, que utiliza a função ISERROR para testar se a função FIELDvalue devolve um erro.

= SE (é. erro (FIELDvalue (a2; "Name")), "esta célula não tem um tipo de dados ligado", "esta célula tem um tipo de dados ligado")

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

Se quiser simplesmente suprimir o #FIELD! pode utilizar:

= SE. erro (CAMPOvalue (A1; "nome"); "")

O que irá devolver uma célula em branco se existir um erro.

Formatação condicional

Pode Formatar condicionalmente uma célula com base em se tem ou não um tipo de dados associado. Em primeiro lugar, selecione as células que necessitam da formatação condicional e, em seguida, aceda à página inicial > formatação condicional > nova regra > utilizar uma fórmula... Para a fórmula, deve utilizar o seguinte:

= Não (é. erro (FIELDvalue (A1; "Name")))

Onde a célula a1 é a célula superior do intervalo que pretende avaliar. Em seguida, aplique o formato pretendido.

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 nenhuma formatação. Em vez disso, pode remover o contrário se quiser destacar todas as células que não contenham tipos de dados ligados válidos.

VBA

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

Ambos os procedimentos irão pedir-lhe 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 trecho de código final é uma função definida pelo utilizador (UDF) e referencia-o tal como faria com qualquer outra fórmula do Excel. 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 um destes exemplos, prima ALT + F11 para abrir o Visual Basic Editor (VBE) e, em seguida, aceda a Inserir> móduloe cole o código na nova janela que é aberta à direita. Pode utilizar ALT + Q para sair novamente para o Excel quando tiver terminado. Para executar um dos dois primeiros exemplos, aceda 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 perguntar a um especialista na Comunidade Tecnológica do Excel, obter suporte na Comunidade de Respostas ou sugerir uma nova funcionalidade ou melhoria no User Voice do Excel.

Aumente os seus conhecimentos do Office
Explore as formações
Seja o primeiro a obter novas funcionalidades
Adira ao Office Insider

As informações foram úteis?

Obrigado pelos seus comentários!

Obrigado pelo seu feedback! Parece que poderá ser benéfico reencaminhá-lo para um dos nossos agentes de suporte do Office.

×