Типовете свързани данни за първи път са издадени в Excel за Microsoft 365 през юни 2018 и поради това други функции може да не са в състояние да ги идентифицират. Това може да е особено вярно, когато искате да използвате други функции, за да определите условно дали една клетка съдържа свързан тип данни, или не. Тази статия обяснява някои заобиколни решения, които можете да използвате, за да идентифицирате свързаните типове данни в клетките.
Забележка: Типовете свързани данни са налични само за клиенти в цял свят, които са мулти-клиент (стандартни акаунти за Microsoft 365 ).
Формули
Винаги можете да пишете формули, които препращат към типове данни. Ако обаче искате да извлечете текста на клетка със свързан тип данни с помощта на функцията 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.
Забележка: Тази страница е преведена чрез автоматизация и може да съдържа граматически грешки и несъответствия. Нашата цел е това съдържание да ви бъде полезно. Можете ли да ни кажете дали информацията е била полезна за вас? Ето статията на английски за справка.