リンクされたデータ型 は 2018 年 6 月に Excel for Microsoft 365 で最初にリリースされたので、他の機能では識別できない場合があります。 これは、他の特徴を使用して、セルにリンクされたデータ型が含まれているかどうかを条件付きで識別する場合に特に当てはまる場合があります。 この記事では、セル内のリンクされたデータ型を識別するために使用できるいくつかの回避策について説明します。
注: リンクされたデータ型は、Worldwide Multi-Tenant クライアント (Standard テナント アカウント) でのみ Microsoft 365 できます。
数式
データ型 を 参照する数式はいつでも記述できます。 ただし、TEXT 関数を使用してリンクされたデータ型のセルのテキストを抽出する場合は、次の#VALUE。 エラーが表示されます。
回避策として 、FIELDVALUE 関数を使用し、引数に Name フィールド field_name します。 次の例では、セル A1 に株価データ型が含まれている場合、数式は株価名を返します。
=FIELDVALUE(A1,"Name")
ただし、セル A1 にリンクされたデータ型が含まれている場合、FIELDVALUE 関数はエラー #FIELD!. セルにリンクされたデータ型が含まれているかどうかを評価する場合は、次の数式を使用できます。この数式では、ISERROR 関数を使用して、FIELDVALUE 関数がエラーを返すかどうかをテストします。
=IF(ISERROR(FIELDVALUE(A2,"Name")),"このセルにはリンクされたデータ型があります","このセルにはリンクされたデータ型があります")
数式がエラーと評価された場合、"このセルにはリンクされたデータ型がない" というテキストが返されます。それ以外の場合は、"このセルにはリンクされたデータ型があります" が返されます。
単にデータを非表示にしたい場合#FIELD。 エラーが発生した場合は、次のコマンドを使用できます。
=IFERROR(FIELDVALUE(A1,"Name"),"")
エラーが発生した場合は空白セルが返されます。
条件付き書式
リンクされた データ型を 持つかどうかに基づいて、条件付きでセルの書式を設定できます。 最初に条件付き書式が必要なセルを選び、[ホーム] > [条件付き書式] >新しい>を使用する...]に移動します。数式には、次のコマンドを使用します。
=NOT(ISERROR(FIELDVALUE(A1,"Name")))
ここで、セル A1 は、評価する範囲内の一番上のセルです。 次に、必要な形式を適用します。
この例では、セル A1 に "Name" の有効なフィールド名が含まれている場合、数式は TRUE を返し、書式設定が適用されます。 セル A1 にリンクされたデータ型が含まれている場合、数式は FALSE を返し、書式設定は適用されません。 有効なリンクされたデータ型を含めなかったセルを強調表示する場合は、NOT を削除できます。
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に戻って終了できます。 最初の 2 つの例のいずれかを実行するには、[開発 ] タブ> Code>マクロ>一覧から実行するマクロを選択し、[実行] を選択します。
補足説明
Excel Tech Communityで、いつでも専門家に質問できます。また、コミュニティでは、サポートを受けられます。