Csatolt adattípusok azonosítása más funkciókkal

Hatókör
Microsoft 365-höz készült Excel

A csatolt adattípusok először 2018 júniusában jelentek meg a Microsoft 365-höz készült Excel-ben, ezért előfordulhat, hogy más funkciók nem tudják azonosítani őket. Ez különösen igaz akkor, ha más funkciókat szeretne használni annak feltételes meghatározására, hogy egy cella tartalmaz-e csatolt adattípust. Ez a cikk a cellákban található csatolt adattípusok azonosításához használható néhány kerülő megoldást ismertet.

Megjegyzés

A csatolt adattípusok csak a világszerte több-bérlős ügyfelek (standard Microsoft 365-fiókok) számára érhetők el.

Képletek

Mindig írhat képleteket, amelyek adattípusokra hivatkoznak. Ha azonban egy csatolt adattípusú cella szövegét szeretné kinyerni a SZÖVEG függvénnyel, #VALUE! típusú hibát jelenít meg.

Egy lehetséges megoldás, ha a MEZŐÉRTÉK függvényt használja, és a Név mezőt adja meg a field_name argumentumhoz. Ha az alábbi példában az A1 cella részvény adattípust tartalmazna, akkor a képlet a tőzsde nevét adja eredményül.

=MEZŐÉRTÉK(A1;"Név")

Ha azonban az A1 cella nem tartalmaz csatolt adattípust, a MEZŐÉRTÉK függvény #FIELD! hibát ad vissza. Ha ki szeretné értékelni, hogy egy cella tartalmaz-e csatolt adattípust, használhatja az alábbi képletet, amely a HIBÁS függvény segítségével azt vizsgálja, hogy a MEZŐÉRTÉK függvény hibát ad-e vissza.

=HA(HIBÁS(MEZŐÉRTÉK(A2,"Név")),"Ez a cella nem csatolt adattípusú","Ez a cella csatolt adattípusú")

Ha a képlet kiértékelése hibát ad, akkor "Ez a cella nem csatolt adattípusú" szöveget adja vissza, ellenkező esetben "Ez a cella csatolt adattípusú" szöveget adja vissza.

Ha egyszerűen csak el akarja rejteni a #FIELD! hibaüzenet jelenik meg, a következőket használhatja:

=HAHIBA(MEZŐÉRTÉK(A1;"Név");"")

Ez a képlet hiba esetén üres cellát ad vissza.

Feltételes formázás

A cellák feltételes formázással adhatók meg attól függően, hogy rendelkeznek-e csatolt adattípusokkal. Először ki kell jelölnie azokat a cellákat, amelyek feltételes formázást igényelnek, majd a Kezdőlapra> kell lépnieFeltételes formázás>Új szabály>Képlet használata... A képlethez a következőt kell használnia:

=NOT(ISERROR(FIELDVALUE(A1,"Name")))

ahol az A1 cella a kiértékelni kívánt tartomány legfelső cellája. Ezután alkalmazza a kívánt formátumot.

Ebben a példában, ha az A1 cella érvényes mezőnevet tartalmaz a "Név" számára, akkor a képlet IGAZ értéket ad vissza, és a program alkalmazza a formázást. Ha az A1 cella nem tartalmaz csatolt adattípust, akkor a képlet a HAMIS értéket adja vissza, és nem alkalmazza a program a formázást. A NOT értéket eltávolíthatja, ha ki szeretné emelni az érvényes csatolt adattípusokat nem tartalmazó cellákat.

VBA

Számos VBA- (Visual Basic for Applications) módszer létezik annak azonosítására, hogy egy cella vagy tartomány csatolt adattípusokat tartalmaz-e. Az első eljárás a HasRichDataType tulajdonságot használja. 

Mindkét eljárás kéri, hogy jelöljön ki egy kiértékelni kívánt cellatartományt, majd az eredményt tartalmazó üzenetpanelt jelenít meg.


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

A következő eljárás a LinkedDataTypeState tulajdonságot használja.


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

Ez a végleges kódrészlet egy felhasználó által definiált függvény (UDF), és ugyanúgy hivatkozhat rá, mint bármely más Excel-képletre. Egyszerűen írja be az =fn_IsLinkedDataType(A1) képletet, ahol az A1 a kiértékelni kívánt cella.


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

Ha szeretné használni a fenti példák bármelyikét, az Alt+F11 billentyűkombinációt lenyomva nyissa meg a Visual Basic Editort (VBE), válassza a Modul beszúrása> elemet, és illessze be a kódot a jobb oldalon megnyíló új ablakba. Ha végzett, az Alt+Q billentyűkombinációval léphet vissza az Excelbe. Az első két példa futtatásához nyissa meg a Fejlesztőeszközök lapot>Kódmakrók>> jelölje ki a futtatni kívánt makrót a listában, majd válassza a Futtatás gombot.

További segítségre van szüksége?

Kérdéseivel mindig felkeresheti az Excel technikai közösség egyik szakértőjét, vagy segítséget kérhet a közösségekben.