Sử dụng các tính năng khác để xác định kiểu dữ liệu được liên kết

Các kiểu dữ liệu được liên kết đã được phát hành trongExcel dành cho Office 365 vào tháng sáu 2018 và như vậy, các tính năng khác có thể không thể xác định chúng. Điều này có thể đặc biệt đúng khi bạn muốn sử dụng các tính năng khác để xác định có điều kiện có một ô chứa kiểu dữ liệu được nối kết hay không. Bài viết này giải thích một số giải pháp thay thế bạn có thể sử dụng để xác định kiểu dữ liệu được liên kết trong các ô.

Công thức

Bạn luôn có thể viết các công thức tham chiếu đến kiểu dữ liệu. Tuy nhiên, nếu bạn muốn trích xuất văn bản của một ô có kiểu dữ liệu được nối kết bằng cách sử dụng hàm TEXT, bạn sẽ nhận được #VALUE! lỗi.

Giải pháp thay thế là dùng hàm Fieldvalue và xác định trường tên cho đối số field_name . Trong ví dụ sau đây, nếu ô A1 chứa kiểu dữ liệu chứng khoán, thì công thức sẽ trả về tên chứng khoán.

= FIELDVALUE (A1, "tên")

Tuy nhiên, nếu ô A1 không chứa kiểu dữ liệu được liên kết, thì hàm FIELDVALUE sẽ trả về lỗi #FIELD!. Nếu bạn muốn đánh giá có một ô có chứa kiểu dữ liệu được liên kết hay không, bạn có thể sử dụng công thức sau đây, sử dụng hàm ISERROR để kiểm tra nếu hàm FIELDVALUE sẽ trả về lỗi.

= IF (ISERROR (FIELDVALUE (A2, "tên")), "ô này không có kiểu dữ liệu được nối kết", "ô này có kiểu dữ liệu được nối kết")

Nếu công thức đánh giá một lỗi, thì nó sẽ trả về văn bản "ô này không có kiểu dữ liệu được nối kết", nếu không, nó sẽ trả về "ô này có kiểu dữ liệu được nối kết".

Nếu bạn chỉ muốn ngăn chặn #FIELD! lỗi, bạn có thể sử dụng:

= IFERROR (FIELDVALUE (A1, "tên"), "")

Sẽ trả về một ô trống nếu có lỗi.

Định dạng điều kiện

Bạn có thể định dạng một ô có điều kiện dựa trên việc có hoặc không có kiểu dữ liệu được liên kết. Trước tiên, bạn sẽ chọn các ô cần định dạng có điều kiện, rồi đi đến trang chủ > định dạng có điều kiện > quy tắc mới > sử dụng một công thức... Đối với công thức, bạn sẽ sử dụng các thao tác sau:

= NOT (ISERROR (FIELDVALUE (A1, "tên"))

Trong đó ô A1 là ô trên cùng trong phạm vi mà bạn muốn đánh giá. Sau đó, áp dụng định dạng bạn muốn.

Trong ví dụ này, nếu ô A1 chứa tên trường hợp lệ cho "tên", thì công thức trả về đúng và định dạng sẽ được áp dụng. Nếu ô A1 không chứa kiểu dữ liệu được nối kết, thì công thức trả về FALSE và không có định dạng nào được áp dụng. Bạn có thể loại bỏ không nếu bạn muốn tô sáng bất kỳ ô nào không chứa kiểu dữ liệu được nối kết hợp lệ thay vào đó.

VBA

Có một vài phương pháp VBA (Visual Basic for Applications) mà bạn có thể sử dụng để xác định xem một ô hoặc dải có chứa các kiểu dữ liệu được liên kết. Quy trình đầu tiên này sử dụng thuộc tính Hasrichdatatype

Cả hai quy trình này sẽ nhắc bạn chọn một phạm vi ô để đánh giá, sau đó trả về một hộp thông báo với kết quả.

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

Quy trình kế tiếp này sử dụng thuộc tính 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

Đoạn mã cuối cùng là một hàm do người dùng xác định (UDF) và bạn tham chiếu nó giống như bất kỳ công thức Excel nào khác. Chỉ cần nhập =fn_IsLinkedDataType (A1), trong đó A1 là ô mà bạn muốn đánh giá.

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

Để sử dụng bất kỳ ví dụ nào trong số này, hãy nhấn Alt + F11 để mở trình soạn thảo Visual Basic (VBE), rồi đi đến chèn> mô-đunvà dán mã trong cửa sổ mới mở ra ở bên phải. Bạn có thể sử dụng Alt + Q để thoát lại vào Excel khi bạn đã hoàn tất. Để chạy một trong hai ví dụ đầu tiên, hãy đi đến tab nhà phát triển> > macro> chọn macro mà bạn muốn chạy từ danh sách, rồi chọn chạy.

Bạn cần thêm trợ giúp?

Bạn luôn có thể nhờ chuyên gia trong Cộng đồng Kỹ thuật Excel, tìm sự hỗ trợ trong Cộng đồng Giải pháp hoặc đề xuất tính năng hay cải tiến mới trên Excel User Voice.

Phát triển kỹ năng Office của bạn
Khám phá nội dung đào tạo
Sở hữu tính năng mới đầu tiên
Tham gia Người dùng nội bộ Office

Thông tin này có hữu ích không?

Cảm ơn phản hồi của bạn!

Cảm ơn bạn đã phản hồi! Để trợ giúp tốt hơn, có lẽ chúng tôi sẽ kết nối bạn với một trong những nhân viên hỗ trợ Office của chúng tôi.

×