Länkade datatyper släpptes först Excel för Microsoft 365 juni 2018 och därför kan det hända att andra funktioner inte kan identifiera dem. Det kan vara särskilt 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 några lösningar 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 klientorganisationsklienter ( Microsoft 365-konton).
Formler
Du kan alltid skriva formler som refererar till datatyper. Om du däremot vill extrahera texten i en cell med en länkad datatyp med hjälp av funktionen TEXT får du en #VALUE! fel.
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öll en aktiedatatyp, skulle formeln returnera aktienamnet.
=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 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 ett fel uppstår.
Villkorsstyrd formatering
Du kan villkorligt formatera en cell baserat på om den har en länkad datatyp. Först markerar du de celler som behöver den villkorsstyrda formateringen och går sedan till Fliken start > villkorsstyrd formatering > Ny regel > Använda en formel... För formeln använder du följande:
=INTE(ÄRFEL(FIELDVALUE(A1;"Namn")))
Där cell A1 är den översta cellen i det område som du vill utvärdera. Använd sedan det format du vill ha.
Om cell A1 i det här exemplet innehåller ett giltigt fältnamn för "Namn" returnerar formeln SANT och formateringen kommer att tillämpas. Om cell A1 inte innehåller en länkad datatyp returnerar formeln FALSKT och ingen formatering används. Du kan ta bort NOT om du vill markera celler som inte innehåller giltiga länkade datatyper i stället.
VBA
Det finns flera VBA-Visual Basic for Applications-metoder som du kan använda för att identifiera om en cell eller ett område innehåller länkade datatyper. Den här första proceduren använder egenskapen HasRichDataType.
Båda dessa procedurer uppmanar dig att markera ett cellområde som ska utvärderas och sedan returnera ett meddelande 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 kodavsnittet är en användardefinierad funktion (UDF) och du refererar till den precis som alla andra Excel formel. Ange helt enkelt =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>-moduloch klistrar in koden i det nya fönstret som öppnas till höger. Du kan använda Alt+Q för att avsluta 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> väljer 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 eller få support i Communities.