การใช้ฟีเจอร์อื่นๆ เพื่อระบุชนิดข้อมูลที่ลิงก์

นำไปใช้กับ
Excel for Microsoft 365

ชนิดข้อมูลที่ลิงก์ถูกเผยแพร่เป็นครั้งแรกใน Excel for Microsoft 365 ในเดือนมิถุนายน 2018 และด้วยเหตุนี้ ฟีเจอร์อื่นๆ อาจไม่สามารถระบุได้ ซึ่งอาจเป็นจริงโดยเฉพาะอย่างยิ่งเมื่อคุณต้องการใช้ฟีเจอร์อื่นๆ เพื่อระบุตามเงื่อนไขว่าเซลล์มีชนิดข้อมูลที่ลิงก์หรือไม่ บทความนี้จะอธิบายวิธีแก้ไขปัญหาชั่วคราวบางอย่างที่คุณสามารถใช้เพื่อระบุชนิดข้อมูลที่ลิงก์ในเซลล์

หมายเหตุ

ชนิดข้อมูลที่ลิงก์จะพร้อมใช้งานสําหรับไคลเอ็นต์หลายผู้เช่าทั่วโลก (บัญชี 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,"ชื่อ"),"")

ซึ่งจะส่งกลับเซลล์ว่างถ้ามีข้อผิดพลาด

การจัดรูปแบบตามเงื่อนไข

คุณสามารถ จัดรูปแบบเซลล์ตามเงื่อนไข โดยยึดตามว่าเซลล์นั้นมีชนิดข้อมูลที่ลิงก์หรือไม่ ก่อนอื่นคุณต้องเลือกเซลล์ที่ต้องการการจัดรูปแบบตามเงื่อนไข แล้วไปที่กฎ>ใหม่สําหรับการจัดรูปแบบ>ตามเงื่อนไขหน้าแรก>ใช้สูตร... สําหรับสูตร คุณต้องใช้สิ่งต่อไปนี้:

=NOT(ISERROR(FIELDVALUE(A1,"ชื่อ")))

โดยที่เซลล์ 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 Editor (VBE) จากนั้นไปที่ แทรก>โมดูล แล้ววางโค้ดในหน้าต่างใหม่ที่เปิดอยู่ทางด้านขวา คุณสามารถใช้ Alt+Q เพื่อออกจาก Excel เมื่อคุณทําเสร็จแล้ว เมื่อต้องการเรียกใช้หนึ่งในสองตัวอย่างแรก ให้ไปที่แท็บ> นักพัฒนาแมโคร>โค้ด> เลือกแมโครที่คุณต้องการเรียกใช้จากรายการ แล้วเลือก เรียกใช้

ต้องการความช่วยเหลือเพิ่มเติมไหม

คุณสามารถสอบถามผู้เชี่ยวชาญใน ชุมชนด้านเทคนิคของ Excel หรือรับการสนับสนุนใน ชุมชนได้เสมอ