Použití dalších funkcí k identifikaci propojených datových typů

Propojené datové typy byly vydány vExcel pro Office 365 v červnu 2018 a v takovém případě nemusí být možné je rozpoznat. To může být obzvláště výhodné, pokud chcete pomocí dalších funkcí určit, zda buňka obsahuje propojený datový typ, nebo ne. Tento článek vysvětluje některá alternativní řešení, která slouží k identifikaci propojených datových typů v buňkách.

Vzorce

Vzorce, které odkazují na datové typy,můžete vždy psát. Pokud ale chcete extrahovat text buňky s propojeným datovým typem pomocí funkce hodnota, získáte #VALUE! Pokud je pozice, kterou uvedete, před první položkou nebo za poslední položkou v poli, bude výsledkem vzorce chyba #REF!.

Alternativním řešením je použít funkci FIELDVALUE a zadat pole název pro argument field_name . Pokud v následujícím příkladu buňka a1 obsahuje datový typ akcie, vzorec vrátí název akcie.

= FIELDVALUE (a1; "název")

Pokud však buňka a1 neobsahuje propojený datový typ, #FIELD vrátí funkce FIELDVALUE .. Pokud chcete zjistit, jestli buňka obsahuje propojený datový typ, můžete použít následující vzorec, který otestuje, jestli funkce FIELDVALUE vrátí chybu.

= Když (FIELDVALUE (a2; "název")); "Tato buňka nemá propojený datový typ", "Tato buňka obsahuje propojený datový typ")

Pokud je výsledkem vzorce chyba, vrátí se text "Tato buňka nemá propojený datový typ", jinak se vrátí "Tato buňka má propojený datový typ".

Pokud chcete #FIELD potlačit! Chyba, můžete použít:

= IFERROR (FIELDVALUE (a1; "název"); "")

V případě chyby vrátí prázdnou buňku.

Podmíněné formátování

Buňku můžete Podmíněně formátovat podle toho, jestli má propojený datový typ. Nejdříve vyberte buňky s podmíněným formátováním a potom přejděte na domovská > podmíněné formátování > nové pravidlo > použít vzorec... Použijte následující vzorec:

= NOT (IsError (FIELDVALUE (a1; "název")))

Kde buňka a1 je horní buňka v oblasti, kterou chcete vyhodnotit. Potom použijte požadovaný formát.

Pokud v tomto příkladu buňka a1 obsahuje platný název pole "název", vrátí vzorec hodnotu pravda a bude použito formátování. Pokud buňka a1 neobsahuje propojený datový typ, vrátí vzorec hodnotu NEPRAVDA a nebude použito žádné formátování. Pokud jste chtěli zvýraznit všechny buňky, které neobsahují platné propojené datové typy, můžete to odebrat.

VBA

Existuje několik metod VBA (Visual Basic for Applications), které můžete použít k určení, jestli buňka nebo oblast obsahuje propojené datové typy. První postup používá vlastnost HasRichDataType

V obou těchto postupech se zobrazí výzva k výběru oblasti buněk k vyhodnocení a vrácení pole se zprávou s výsledky.

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

Tato další procedura používá vlastnost 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

Tento konečný fragment kódu je funkce definovaná uživatelem (UDF) a odkazujete na ni stejně jako na jakýkoliv jiný vzorec aplikace Excel. Zadejte =fn_IsLinkedDataType (a1), kde a1 je buňka, kterou chcete vyhodnotit.

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

Chcete-li použít některý z těchto příkladů, stiskněte kombinaci kláves ALT + F11 , čímž otevřete Editor VBE (Visual Basic Editor), přejděte na vložení> modula vložte kód do nového okna, které se otevře vpravo. Až skončíte, můžete se stisknutím ALT + Q vrátit zpátky do Excelu. Pokud chcete spustit jeden z prvních dvou příkladů, přejděte na kartu vývojář> kód> makra> v seznamu vyberte makro, které chcete spustit, a pak vyberte Spustit.

Potřebujete další pomoc?

Kdykoli se můžete zeptat některého odborníka v technické komunitě Excelu, získat podporu v komunitě pro odpovědi, případně navrhnout novou funkci nebo vylepšení ve fóru Excel User Voice.

Rozšiřte své dovednosti s Office
Projít školení
Získejte nové funkce jako první
Připojte se k účastníkům programu Office Insiders

Byly tyto informace užitečné?

Děkujeme vám za zpětnou vazbu.

Děkujeme vám za váš názor! Pravděpodobně bude užitečné, když vás spojíme s některým z našich agentů podpory Office.

×