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.