تم إصدار أنواع البيانات المرتبطة لأول مرة في Excel لـ Microsoft 365 في يونيو 2018، وعلى هذا النحو، قد لا تتمكن الميزات الأخرى من التعرف عليها. يمكن أن يكون هذا صحيحا بشكل خاص عندما تريد استخدام ميزات أخرى لتحديد ما إذا كانت الخلية تحتوي على نوع بيانات مرتبط أم لا بشكل مشروط. تشرح هذه المقالة بعض الحلول البديلة التي يمكنك استخدامها لتحديد أنواع البيانات المرتبطة في الخلايا.
ملاحظة
تتوفر أنواع البيانات المرتبطة فقط للعملاء متعددي المستأجرين في جميع أنحاء العالم (حسابات Microsoft 365 القياسية).
الصيغ
يمكنك دائما كتابة الصيغ التي تشير إلى أنواع البيانات. ومع ذلك، إذا كنت تريد استخراج نص خلية بنوع بيانات مرتبط باستخدام الدالة TEXT، فستحصل على #VALUE! #REF!.
الحل البديل هو استخدام الدالة FIELDVALUE وتحديد حقل الاسم للوسيطة field_name . في المثال التالي، إذا كانت الخلية A1 تحتوي على نوع بيانات مخزون، فسترجع الصيغة اسم المخزون.
=FIELDVALUE(A1,"Name")
ومع ذلك، إذا كانت الخلية A1 لا تحتوي على نوع بيانات مرتبط، فسترجع الدالة FIELDVALUE خطأ #FIELD!. إذا كنت تريد تقييم ما إذا كانت الخلية تحتوي على نوع بيانات مرتبط أم لا، يمكنك استخدام الصيغة التالية، التي تستخدم الدالة ISERROR لاختبار ما إذا كانت الدالة FIELDVALUE سترجع خطأ.
=IF(ISERROR(FIELDVALUE(A2,"Name")),"لا تحتوي هذه الخلية على نوع بيانات مرتبط","تحتوي هذه الخلية على نوع بيانات مرتبط")
إذا تم تقييم الصيغة إلى خطأ، فسترجع النص "لا تحتوي هذه الخلية على نوع بيانات مرتبط"، وإلا فسترجع "تحتوي هذه الخلية على نوع بيانات مرتبط".
إذا كنت تريد ببساطة منع #FIELD! خطأ، يمكنك استخدام:
=IFERROR(FIELDVALUE(A1,"Name"),"")
الذي سيعيد خلية فارغة إذا كان هناك خطأ.
التنسيق الشرطي
يمكنك تنسيق خلية بشكل مشروط استنادا إلى ما إذا كانت تحتوي على نوع بيانات مرتبط أم لا. يمكنك أولا تحديد الخلايا التي تحتاج إلى التنسيق الشرطي، ثم الانتقال إلى Home>Conditional Formatting>New Rule>Use a formula... بالنسبة للصيغة، يمكنك استخدام ما يلي:
=NOT(ISERROR(FIELDVALUE(A1,"Name")))
حيث الخلية A1 هي الخلية العلوية في النطاق الذي تريد تقييمه. ثم قم بتطبيق التنسيق الذي تريده.
في هذا المثال، إذا كانت الخلية A1 تحتوي على اسم حقل صالح ل "الاسم"، فترجع الصيغة 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 عند الانتهاء. لتشغيل أي من المثالين الأولين، انتقل إلى علامة التبويب> المطور التعليمات >البرمجية>الماكرو حدد الماكرو الذي تريد تشغيله من القائمة، ثم حدد تشغيل.
هل تحتاج إلى مزيد من المساعدة؟
يمكنك دائما سؤال خبير في مجتمع Excel التقني أو الحصول على الدعم في المجتمعات.