Använda andra funktioner för att identifiera länkade datatyper

Gäller för
Excel för Microsoft 365

Länkade datatyper släpptes först i Excel för Microsoft 365 i juni 2018, och därför kanske andra funktioner inte kan identifiera dem. Detta kan särskilt vara sant när du vill använda andra funktioner för att villkorligt identifiera om en cell innehåller en länkad datatyp eller inte. I den här artikeln förklaras några lösningar som du kan använda för att identifiera länkade datatyper i celler.

Obs

Länkade datatyper är endast tillgängliga för globala klienter med flera klientorganisationer (standard-Microsoft 365-konton).

Formler

Du kan alltid skriva formler som refererar till datatyper. Men om du vill extrahera texten i en cell med en länkad datatyp med hjälp av funktionen TEXT får du ett #VALUE! #REF!.

En lösning är att använda funktionen FIELDVALUE och ange fältet Namn för argumentet field_name . I följande exempel returnerar formeln aktienamnet om cell A1 innehöll en aktiedatatyp.

=FIELDVALUE(A1;"Namn")

Men om cell A1 inte innehåller en länkad datatyp returnerar funktionen FIELDVALUE ett #FIELD!-fel. Om du vill utvärdera om en cell innehåller en länkad datatyp eller inte kan du använda följande formel, som använder funktionen ÄRFEL för att testa om funktionen FIELDVALUE returnerar ett fel.

=OM(ÄRFEL(FIELDVALUE(A2;"Namn"));"Den här cellen har ingen länkad datatyp";"Den här cellen har en länkad datatyp")

Om formeln utvärderas till ett fel returneras texten "Den här cellen har ingen länkad datatyp", annars returneras "Den här cellen har en länkad datatyp".

Om du bara vill dölja #FIELD! kan du använda:

=OMFEL(FIELDVALUE(A1;"Namn"),"")

Vilket returnerar en tom cell om det finns ett fel.

Villkorsstyrd formatering

Du kan villkorligt formatera en cell baserat på om den har en länkad datatyp eller inte. Först markerar du de celler som behöver den villkorsstyrda formateringen och går sedan till Start>villkorsstyrd formatering>Ny regel>Använd en formel... För formeln använder du följande:

=ICKE(ÄRFEL(FIELDVALUE(A1;"Namn")))

Där cell A1 är den översta cellen i området som du vill utvärdera. Använd sedan det format du vill använda.

Om cell A1 i det här exemplet innehåller ett giltigt fältnamn för "Namn" returnerar formeln SANT och formatering används. Om cell A1 inte innehåller en länkad datatyp returnerar formeln FALSKT och ingen formatering används. Du kan ta bort ICKE om du vill markera celler som inte innehåller giltiga länkade datatyper i stället.

VBA

Det finns flera VBA-metoder (Visual Basic for Applications) som du kan använda för att identifiera om en cell eller ett område innehåller länkade datatyper. I den här första proceduren används egenskapen HasRichDataType

Båda dessa procedurer uppmanar dig att markera ett cellområde att utvärdera och sedan returnera en meddelanderuta med resultatet.


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

I nästa procedur används egenskapen 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

Det här slutliga kodavsnittet är en användardefinierad funktion (UDF) och du refererar till den precis som alla andra Excel-formler. Skriv bara =fn_IsLinkedDataType(A1), där A1 är den cell du vill utvärdera.


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

Om du vill använda något av dessa exempel trycker du på Alt+F11 för att öppna Visual Basic Editor (VBE), går sedan till Infoga>modul och klistrar in koden i det nya fönstret som öppnas till höger. Du kan använda Alt+Q för att gå tillbaka till Excel när du är klar. Om du vill köra något av de två första exemplen går du till fliken> UtvecklareKodmakron>> väljer det makro som du vill köra i listan och väljer kör.

Behöver du mer hjälp?

Du kan alltid fråga en expert i Excel Tech Community eller få support i Communities.