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

Länkade data typer släpptes iExcel för Office 365 i juni 2018 och som sådana kan andra funktioner kanske inte identifiera dem. Det kan vara speciellt 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 beskrivs vissa lösningar som du kan använda för att identifiera länkade data typer i celler.

Formler

Du kan alltid skriva formler som refererar till data typer. Om du däremot vill extrahera texten i en cell med en länkad datatyp med hjälp av funktionen TEXT får du ett #VALUE! felet #VÄRDEFEL!.

En lösning är att använda funktionen FIELDVALUE och ange fältet namn för field_name argumentet. I följande exempel, om cell a1 innehåller en aktie data typ, returnerar formeln lagrets namn.

= FIELDVALUE (a1; "namn")

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 kan du använda följande formel, som använder funktionen ÄRFEL för att testa om funktionen FIELDVALUE returnerar ett fel meddelande.

= 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 "det finns ingen länkad datatyp", annars returnerar den "den här cellen har en länkad datatyp".

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

= OMFEL (FIELDVALUE (a1; "namn"); "")

Det returnerar en tom cell om det finns ett fel.

Villkorsstyrd formatering

Du kan villkorsstyrd formatering av en cell baserat på om den har en länkad datatyp. Du markerar först de celler som behöver villkorsstyrd formatering och sedan gå till start > villkorsstyrd formatering > ny regel > använda en formel... För formeln gör du följande:

= INTE (Ä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ält namn för "namn" returnerar formeln sant och formateringen tillämpas. Om cell a1 inte innehåller en länkad datatyp returnerar formeln falskt och ingen formatering används. Du kan ta bort den inte om du vill markera celler som inte innehåller giltiga länkade data typer 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 data typer. Den första proceduren använder egenskapen HasRichDataType

Med båda dessa procedurer uppmanas du att markera ett cell område som ska utvärderas och sedan gå tillbaka till en meddelande ruta 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 den här 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

Detta slut kods tycke är en användardefinierad funktion (UDF) och du refererar den precis som en annan Excel-formel. Ange =fn_IsLinkedDataType (a1), där a1 är den cell som 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 de här exemplen trycker du på Alt + F11 för att öppna Visual Basic Editor (VBE) och går sedan till Infoga> moduloch 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 utvecklare> kod> makron> markerar det makro du vill köra i listan och väljer sedan Kör.

Behöver du mer hjälp?

Du kan alltid fråga en expert i Excel Tech Community, få support i Answers-communityn eller föreslå en ny funktion eller förbättringar på Excel User Voice.

Utöka dina Office-kunskaper
Utforska utbildning
Få nya funktioner först
Anslut till Office Insiders

Hade du nytta av den här informationen?

Tack för din feedback!

Tack för din feedback! Det låter som att det kan vara bra att koppla dig till en av våra Office-supportrepresentanter.

×