使用 Microsoft 登录
登录或创建帐户。
你好,
使用其他帐户。
你有多个帐户
选择要登录的帐户。

链接数据类型 于 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 技术社区中咨询专家或在社区中获取支持。

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。

社区可帮助你提出和回答问题、提供反馈,并听取经验丰富专家的意见。

此信息是否有帮助?

你对语言质量的满意程度如何?
哪些因素影响了你的体验?
按“提交”即表示你的反馈将用于改进 Microsoft 产品和服务。 你的 IT 管理员将能够收集此数据。 隐私声明。

谢谢您的反馈!

×