Brug af andre funktioner til at identificere sammenkædede datatyper

Sammenkædede datatyper er blevet udgivet iExcel til Office 365 i juni 2018, og derfor kan andre funktioner muligvis ikke identificere dem. Dette kan især være sandt, når du vil bruge andre funktioner til at angive, om en celle indeholder en sammenkædet datatype eller ej. I denne artikel beskrives nogle af de løsninger, du kan bruge til at identificere sammenkædede datatyper i celler.

Formler

Du kan altid skrive formler, der henviser til datatyper. Men hvis du vil udtrække teksten i en celle med en sammenkædet datatype ved hjælp af funktionen tekst, får du et #VALUE! som fejl.

Du kan løse problemet ved at bruge funktionen feltværdi og angive navne feltet for argumentet field_name . Hvis celle a1 i følgende eksempel indeholdt en aktie datatype, returnerer formlen aktieen.

= FELTVÆRDI (a1; "navn")

Men hvis celle a1 ikke indeholder en sammenkædet datatype, vil funktionen FELTVÆRDI returnere en #FIELD!-fejl. Hvis du vil evaluere, om en celle indeholder en sammenkædet datatype, kan du bruge følgende formel, som anvender funktionen fejl til at teste, om funktionen FELTVÆRDI returnerer en fejl.

= Hvis (fejl (FELTVÆRDI (a2; "navn")), "denne celle har ikke en sammenkædet datatype", "denne celle har en sammenkædet datatype")

Hvis formlen evalueres til en fejl, returneres teksten "denne celle har ikke en sammenkædet datatype", ellers returneres "denne celle har en sammenkædet datatype".

Hvis du blot vil undertrykke #FIELD! fejl, kan du bruge:

= Hvis. fejl (FELTVÆRDI (a1; "navn"), "")

Derved returneres en tom celle, hvis der er en fejl.

Betinget formatering

Du kan formatere en celle betinget, afhængigt af om den har en sammenkædet datatype. Du skal først markere de celler, der skal have den betingede formatering, og derefter gå til start > betinget formatering > ny regel > bruge en formel... For formlen skal du bruge følgende:

= IKKE (fejl (FELTVÆRDI (a1; "navn"))

Hvor celle a1 er den øverste celle i det område, du vil evaluere. Anvend derefter det ønskede format.

Hvis celle a1 i dette eksempel indeholder et gyldigt feltnavn for "navn", returnerer formlen sand, og der anvendes formatering. Hvis celle a1 ikke indeholder en sammenkædet datatype, returnerer formlen falsk, og der vil ikke blive anvendt formatering. Du kan fjerne ikke, hvis du vil fremhæve celler, der ikke indeholder gyldige sammenkædede datatyper i stedet.

VBA

Der er flere VBA-metoder (Visual Basic for Applications), som du kan bruge til at identificere, om en celle eller et område indeholder sammenkædede datatyper. Denne første procedure bruger egenskaben HasRichDataType

Begge disse procedurer beder dig om at markere et celleområde, der skal evalueres, og derefter returnere et meddelelsesfelt med resultaterne.

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

Denne næste procedure anvender egenskaben 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

Dette endelige kodestykke er en brugerdefineret funktion (UDF), og du henviser til det ligesom enhver anden Excel-formel. Du skal blot indtaste =fn_IsLinkedDataType (a1), hvor a1 er den celle, du vil evaluere.

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

Hvis du vil bruge et af disse eksempler, skal du trykke på alt + F11 for at åbne Visual Basic Editor (VBE) og derefter gå til Indsæt> modulog indsætte koden i det nye vindue, der åbnes til højre. Du kan bruge alt + Q til at afslutte tilbage til Excel, når du er færdig. Hvis du vil køre en af de første to eksempler, skal du gå til fanen udvikler> kode> makroer> vælge den makro, du vil afspille, på listen og derefter vælge Kør.

Har du brug for mere hjælp?

Du kan altid spørge en ekspert i Excel Tech Community, få support i Answers community eller foreslå en ny funktion eller forbedring i Excel User Voice.

Udvid dine Office-færdigheder
Gå på opdagelse i kurser
Få nye funktioner først
Bliv Office Insider

Var disse oplysninger nyttige?

Tak for din feedback!

Tak for din feedback! Det lyder, som om det vil kunne hjælpe, hvis du bliver sat i forbindelse med en af vores Office-supportteknikere.

×