Перейти до основного
Підтримка
Вхід
Вхід за допомогою облікового запису Microsoft
Увійдіть або створіть обліковий запис.
Вітаємо,
Виберіть інший обліковий запис.
У вас є кілька облікових записів
Виберіть обліковий запис, за допомогою якого потрібно ввійти.

Зв'язані типи даних вперше з'явилися Excel для Microsoft 365 червня 2018 р., і, таким чином, інші функції можуть не вдатися визначити їх. Це може бути особливо важливо, якщо потрібно скористатися іншими функціями, щоб умовно визначити, чи клітинка містить зв'язаний тип даних. У цій статті описано кілька тимчасових вирішення, які використовуються для визначення зв'язаних типів даних у клітинках.

Примітка.: Зв'язані типи даних доступні лише для клієнтів із кількома клієнтами по всьому світу (стандартні облікові Microsoft 365 клієнтів).

Формули

Ви завжди можете створити формули, які посилаються на типи даних. Однак якщо за допомогою функції TEXT ви бажаєте видобути текст клітинки зі зв'язаним типом даних, відобразиться #VALUE! помилку #REF!.

Щоб обійти це, скористайтеся функцією FIELDVALUE та вкажіть поле Name (Ім'я) 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, і форматування не буде застосовано. Можна видалити значення NOT, якщо потрібно виділити клітинки, які не містять припустимі зв'язані типи даних.

VBA

Існує кілька способів визначення типу Visual Basic for Applications (VBA), за допомогою яких можна визначити, чи клітинка або діапазон містить зв'язані типи даних. Для першої процедури використовується властивість 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), перейдіть до вставлення >Moduleі вставте код у нове вікно, яке відкриється праворуч. Коли все буде готово, можна повернутися до Excel Alt+Q. Щоб запустити будь-який із перших двох прикладів, на вкладці Розробник натисніть кнопку > Код > макросів> виберіть зі списку макрос, який потрібно запустити, а потім натисніть кнопку Виконати.

Потрібна додаткова довідка?

Ви завжди можете поставити запитання експерту в спільноті Tech у розділі Excel чи отримати підтримку в спільнотах.

Потрібна додаткова довідка?

Потрібні додаткові параметри?

Ознайомтеся з перевагами передплати, перегляньте навчальні курси, дізнайтесь, як захистити свій пристрій тощо.

Спільноти допомагають ставити запитання й відповідати на них, надавати відгуки та дізнаватися думки висококваліфікованих експертів.

Чи ця інформація була корисною?

Наскільки ви задоволені якістю мови?
Що вплинуло на ваші враження?
Натиснувши кнопку "Надіслати", ви надасте свій відгук для покращення продуктів і служб Microsoft. Ваш ІТ-адміністратор зможе збирати ці дані. Декларація про конфіденційність.

Дякуємо за відгук!

×