Перейти до основного
Office

Використання інших функцій для визначення зв'язаних типів даних

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

Формули

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

Спосіб вирішення – це використання функції Fieldvalue і визначення поля " ім'я " для аргументу " field_name ". У наведеному нижче прикладі, якщо клітинка a1 містила тип даних запасу, формула поверне ім'я запасу.

= ЗНАЧЕННЯ _ поля (a1; "ім'я")

Однак, якщо клітинка a1 не містить зв'язаний тип даних, функція FIELDVALUE поверне #FIELD! помилка. Якщо потрібно перевірити, чи містить стовпець зв'язаний тип даних, можна скористатися наведенною нижче формулою, яка використовує функцію ISERROR, щоб перевірити, чи функція FIELDVALUE поверне помилку.

= IF (ISERROR (FIELSVALUE (a2; "Name")), "Ця клітинки не має зв'язаного типу даних", "Ця клітинки має зв'язаний тип даних")

Якщо формула обчислює повідомлення про помилку, він поверне текст "Ця батарея не має зв'язаного типу даних", інакше вона поверне "цей елемент має зв'язаний тип даних".

Якщо ви просто хочете, щоб придушити #FIELD! повідомлення про помилку можна використовувати:

= IFERROR (FIELFVALUE (a1; "ім'я"), "")

Що поверне пусту клітинку, якщо з'являється повідомлення про помилку.

Умовне форматування

Ви можете умовно форматувати вміст залежно від того, чи має він зв'язаний тип даних. Спочатку потрібно вибрати клітинки, які потребують умовного форматування, а потім перейдіть на вкладку основне > Умовне форматування > нового правила > використовувати формулу... Для формули слід використовувати наведені нижче дії.

= NOT (ISERROR (FIELSЗНАЧЕННЯ (a1; "Name")))

Де клітинка a1 – це Верхня клітинка діапазону, яку потрібно обчислити. Потім застосувати потрібний формат.

У цьому прикладі, якщо клітинка a1 містить припустиме ім'я поля для слова "Name", то буде застосовано значення 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

У цій наступній процедурі використовується властивість Linkeddatatenpstate.

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, коли все буде Готово. Щоб запустити один із двох перших прикладів, перейдіть на вкладку розробник> код> макроси> виберіть макрос, який потрібно запустити зі списку, а потім натисніть кнопку виконати.

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

Ви завжди можете поставити запитання експерту в спільноті Tech (у розділі Excel), отримати підтримку в спільноті, що допомагає знайти відповіді на запитання, або запропонувати нову функцію чи вдосконалення на форумі Excel User Voice.

Удосконалення навичок роботи з Office
Ознайомтеся з навчальними матеріалами
Отримуйте нові функції раніше за інших
Приєднайтеся до оцінювачів Office

Ця інформація корисна?

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

Дякуємо, що знайшли час і надіслали нам відгук! Можливо, у нас не буде часу відповісти на кожен коментар, але докладемо максимум зусиль, щоб переглянути їх усі. Вас цікавить, як ми використовуємо ваші відгуки?

×