链接数据类型 于 2018 年 6 Microsoft 365 专属 Excel 首次发布,因此,其他功能可能无法识别它们。 当你想要使用其他特征有条件地确定单元格是否包含链接单元格时,数据类型尤其如此。 本文介绍可用于识别单元格中链接数据类型的一些解决方法。
注意: 链接数据类型仅适用于全球多租户客户端 (标准 Microsoft 365 帐户) 。
公式
您始终 可以编写可引用数据公式。 但是,如果要使用 TEXT 函数提取具有链接单元格数据类型单元格的文本,则你会获得#VALUE! 错误。
解决方法是使用FIELDVALUE函数,并指定参数参数field_name字段。 在下面的示例中,如果单元格 A1 包含股票数据类型,则公式将返回股票名称。
=FIELDVALUE (A1,"Name")
但是,如果单元格 A1 不包含链接数据类型,则 FIELDVALUE 函数将返回 #FIELD! 错误. 如果要评估单元格是否包含链接的 数据类型,可以使用以下公式,该公式使用 ISERROR 函数来测试 FIELDVALUE 函数是否将返回错误。
=IF (ISERROR (FIELDVALUE (A2,"Name") ) ,"此单元格没有链接的 数据类型","此单元格具有链接的 数据类型")
如果公式计算结果为错误,则它将返回文本"此单元格没有链接数据类型",否则将返回"此单元格具有链接数据类型"。
如果只想取消该#FIELD! 错误,可以使用:
=IFERROR (FIELDVALUE (A1,"Name") ,"")
如果存在错误,将返回空白单元格。
条件格式
你可以 根据单元格是否 具有链接单元格来有条件数据类型。 首先选择需要条件格式的单元格,然后转到"开始">"条件格式">">使用公式..."对于公式,请使用以下代码:
=NOT (ISERROR (FIELDVALUE (A1,"Name") ) )
其中单元格 A1 是要计算区域的顶部单元格。 然后应用需要的格式。
此示例中,如果单元格 A1 包含"名称"的有效字段名称,则公式返回 TRUE,将应用格式。 如果单元格 A1 不包含链接数据类型,则公式返回 FALSE,并且不会应用任何格式。 如果要突出显示不包含有效链接数据类型的任何单元格,可以删除 NOT。
VBA
有几种 VBA (Visual Basic for Applications) 可用于识别单元格或区域是否包含链接数据类型。 第一个过程使用 HasRichDataType 属性。
这两个过程都会提示选择要评估的单元格区域,然后返回包含结果的消息框。
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
下一过程使用 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
此最终代码片段是 UDF (用户定义的) ,你像引用公式中任何其他代码Excel一样。 只需输入 =fn_IsLinkedDataType (A1) , 其中 A1 是要计算单元格。
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
若要使用上述任一示例,请按Alt+F11打开 Visual Basic 编辑器 (VBE) ,然后转到"插入>模块",并将代码粘贴到右侧打开的新窗口中。 完成后,可以使用 Alt+Q退出Excel返回。 若要运行前两个示例之一,请转到"开发工具"选项卡>"代码">"宏>从列表中选择要运行的宏,然后选择"运行"。
需要更多帮助吗?
可随时在 Excel 技术社区中咨询专家或在社区中获取支持。