Applies To„Excel“, skirta „Microsoft 365“ Internetinė „Excel“

Susieti duomenų tipai pirmą kartą buvo išleisti „Excel“, skirta „Microsoft 365“ 2018 m. birželio mėn., todėl kitos funkcijos gali jų identifikuoti. Tai gali būti ypač aktualu, kai norite naudoti kitas funkcijas, kad sąlygiškai nustatytų, ar langelyje yra susietas duomenų tipas, ar ne. Šiame straipsnyje paaiškinami keli sprendimo būdai, kuriuos galite naudoti susietų duomenų tipams langeliuose identifikuoti.

Pastaba: Susietų duomenų tipai galimi tik "Worldwide Multi-Tenant" klientams (standartinėms „Microsoft 365“ paskyroms).

Formulės

Visada galite rašyti formules, kurios nurodo duomenų tipus. Tačiau, jei norite išskleisti langelio tekstą su susietų duomenų tipu naudodami funkciją TEXT, gausite #VALUE! klaidą.

Sprendimo būdas yra naudoti funkciją FIELDVALUE ir nurodyti argumento field_name lauką Pavadinimas. Toliau pateiktame pavyzdyje, jei langelyje A1 yra akcijų duomenų tipas, formulė grąžins akcijų pavadinimą.

=FIELDVALUE(A1,"Name")

Tačiau, jei langelyje A1 nėra susietų duomenų tipo, funkcija FIELDVALUE grąžins #FIELD! klaidą. Jei norite įvertinti, ar langelyje yra susietas duomenų tipas, galite naudoti šią formulę, kuri naudoja funkciją ISERROR patikrinti, ar funkcija FIELDVALUE grąžins klaidą.

=IF(ISERROR(FIELDVALUE(A2,"Name")),"Šis langelis neturi susietų duomenų tipo","Šis langelis turi susietą duomenų tipą")

Jei formulė įvertina klaidą, ji grąžins tekstą "Šis langelis neturi susieto duomenų tipo", priešingu atveju ji grąžins "Šis langelis turi susietą duomenų tipą".

Jei tiesiog norite nerodyti #FIELD! klaidą, galite naudoti:

=IFERROR(FIELDVALUE(A1,"Name"),"")

Kuris grąžins tuščią langelį, jei yra klaida.

Sąlyginis formatavimas

Galite sąlygiškai formatuoti langelį pagal tai, ar jis turi susietą duomenų tipą. Pirmiausia pažymėkite langelius, kuriems reikia sąlyginio formatavimo, tada eikite į Pagrindinis > Sąlyginis formatavimas > Nauja taisyklė > Naudoti formulę... Formulėje turėtumėte naudoti šiuos veiksmus:

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

Kur langelis A1 yra viršutinis langelis diapazone, kurį norite įvertinti. Tada pritaikykite norimą formatą.

Šiame pavyzdyje, jei langelyje A1 yra leistinas lauko pavadinimas "Pavadinimas", formulė grąžina TRUE ir bus pritaikytas formatavimas. Jei langelyje A1 nėra susietų duomenų tipo, formulė grąžina FALSE ir nebus taikomas joks formatavimas. Jei norite pažymėti langelius, kuriuose nėra galiojančių susietų duomenų tipų, galite pašalinti NOT.

VBA

Yra keli VBA ("Visual Basic for Applications") metodai, kuriuos galite naudoti norėdami nustatyti, ar langelyje ar diapazone yra susietų duomenų tipų. Ši pirmoji procedūra naudoja ypatybę HasRichDataType

Abi šios procedūros paragins pasirinkti norimų įvertinti langelių diapazoną, tada pateikti pranešimo lauką su rezultatais.

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 kita procedūra naudoja ypatybę 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

Šis galutinis kodo fragmentas yra vartotojo apibrėžta funkcija (UDF) ir nurodote ją kaip bet kurią kitą Excel formulę. Tiesiog įveskite =fn_IsLinkedDataType(A1), kur A1 yra langelis, kurį norite įvertinti.

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

Norėdami naudoti bet kurį iš šių pavyzdžių, paspauskite Alt + F11, kad atidarytumėte "Visual Basic" rengyklę (VBE), tada eikite į Įterpti">"modulį ir įklijuokite kodą naujame lange, kuris atidaromas dešinėje. Galite naudoti Alt + Q, kad išeitumėte Excel, kai baigsite. Norėdami paleisti vieną iš pirmųjų dviejų pavyzdžių, eikite į skirtuką Programų kūrėjas> Kodas > Makrokomandos > sąraše pasirinkite makrokomandą, kurią norite vykdyti, tada pasirinkite Vykdyti.

Reikia daugiau pagalbos?

Visada galite paklausti „Excel“ technologijų bendruomenės specialisto arba gauti palaikymo bendruomenėse.

Reikia daugiau pagalbos?

Norite daugiau parinkčių?

Sužinokite apie prenumeratos pranašumus, peržiūrėkite mokymo kursus, sužinokite, kaip apsaugoti savo įrenginį ir kt.

Bendruomenės padeda užduoti klausimus ir į juos atsakyti, pateikti atsiliepimų ir išgirsti iš ekspertų, turinčių daug žinių.