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.