Свързаните типове данни са издадени за първи път Excel за Microsoft 365 юни 2018 г. и като такива е възможно други функции да не могат да ги идентифицират. Това може да е особено вярно, когато искате да използвате други функции, за да определите условно дали дадена клетка съдържа свързан тип данни, или не. Тази статия обяснява някои заобиколни решения, които можете да използвате за идентифициране на свързани типове данни в клетки.

Забележка: Свързаните типове данни са налични само за клиенти с много клиенти по целия свят (стандартни Microsoft 365 акаунти).

Формули

Винаги можете да пишете формули, които препращат към типове данни. Ако обаче искате да извлечете текста на клетка със свързан тип данни с помощта на функцията TEXT, ще получите #VALUE! грешка.

Заобиколно решение е да използвате функцията FIELDVALUE и да зададете полето Име за field_name аргумент. В следващия пример, ако клетка A1 съдържа тип борсови данни, формулата ще върне името на борса.

=FIELDVALUE(A1;"Име")

Ако обаче клетка A1 не съдържа свързан тип данни, функцията FIELDVALUE ще върне грешка #FIELD!.. Ако искате да прецените дали дадена клетка съдържа свързан тип данни, можете да използвате следната формула, която използва функцията ISERROR, за да провери дали функцията FIELDVALUE ще върне грешка.

=IF(ISERROR(FIELDVALUE(A2;"Име"));"Тази клетка няма свързан тип данни";"Тази клетка има свързан тип данни")

Ако формулата се изчисли като грешка, тя ще върне текста "Тази клетка няма свързан тип данни", в противен случай ще върне "Тази клетка има свързан тип данни".

Ако просто искате да потисне #FIELD! грешка, можете да използвате:

=IFERROR(FIELDVALUE(A1;"Име"),"")

Което ще върне празна клетка, ако има грешка.

Условно форматиране

Можете условно да форматирате клетка въз основа на това дали има свързан тип данни. Първо ще изберете клетките, които се нуждаят от условното форматиране, и след това отидете на Начало > Условно форматиране > Ново правило > Използване на формула... За формулата ще използвате следното:

=NOT(ISERROR(FIELDVALUE(A1;"Име")))

Където клетка A1 е най-горната клетка в диапазона, който искате да оцените. След това приложете формата, който искате.

В този пример, ако клетка A1 съдържа валидно име на поле за "Име", формулата връща TRUE и форматирането ще бъде приложено. Ако клетка A1 не съдържа свързан тип данни, формулата връща FALSE и няма да се приложи форматиране. Можете да премахнете НЕ, ако искате вместо това да маркирате клетки, които не съдържат валидни свързани типове данни.

VBA

Има няколко метода на VBA (Visual Basic за приложения), които можете да използвате, за да определите дали дадена клетка или диапазон съдържа свързани типове данни. Тази първа процедура използва свойството HasRichDataType

И двете процедури ще ви подканят да изберете диапазон от клетки за оценка, след което да върнете поле за съобщение с резултатите.

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

Тази следваща процедура използва свойството 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

Този окончателен фрагмент с код е дефинирана от потребителя функция (UDF) и го препращате точно като всяка друга Excel формула. Просто въведете =fn_IsLinkedDataType(A1), където A1 е клетката, която искате да оцените.

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

За да използвате някой от тези примери, натиснете Alt+F11, за да отворите редактора на Visual Basic (VBE), след което отидете на Вмъкване на модул> ипоставете кода в новия прозорец, който се отваря отдясно. Можете да използвате Alt+Q, за да излезете обратно Excel, когато сте готови. За да изпълните някой от първите два примера, отидете на раздела Разработчик >Код > Макроси> изберете макроса, който искате да изпълните от списъка, след което изберете Изпълнение.

Имате нужда от още помощ?

Винаги можете да попитате експерт в техническата общност на excel или да получите поддръжка в Общността за отговори от.

Нуждаете се от още помощ?

Разширете уменията си
Преглед на обучението
Получавайте първи новите функции
Присъединете се към Microsoft приобщени

Беше ли полезна тази информация?

Доколко сте доволни от качеството на превода?
Какво е повлияло на вашия потребителски опит?

Благодарим ви за обратната връзка!

×