Преминаване към основното съдържание
Office

Използване на други функции за идентифициране на свързаните типове данни

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

Формули

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

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

= FIELDVALUE (a1; "име")

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

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

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

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

= IFERROR (FIELDVALUE (a1; "name"); "")

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

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

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

= NOT (ISERROR (FIELDVALUE (a1; "name"))))

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

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

VBA

Има няколко метода на VBA (Visual Basic for Applications), които можете да използвате, за да идентифицирате дали една клетка или диапазон съдържа свързани типове данни. Тази първа процедура използва свойството 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, да получите поддръжка в общността за отговори или да предложите нова функция или подобрение на User Voice за Excel.

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

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

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

Благодарим ви за вашата обратна връзка. Изглежда, че ще бъде полезно да ви свържем с един от нашите агенти по поддръжката на Office.

×