Các kiểu dữ liệu được liên kết được phát hành lần đầu vào Excel for Microsoft 365 tháng 6 năm 2018 và do đó, các tính năng khác có thể không xác định được chúng. Điều này có thể đặc biệt đúng khi bạn muốn dùng các tính năng khác để nhận dạng có điều kiện một ô có chứa kiểu dữ liệu được liên 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ể dùng để xác định kiểu dữ liệu được liên kết trong các ô.
Lưu ý: Các kiểu dữ liệu được liên kết chỉ sẵn dùng cho máy khách Nhiều Đối tượng thuê Trên toàn thế giới (tài khoản Microsoft 365 chuẩn).
Công thức
Bạn luôn có thể viết công thức tham chiếu 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 liên kết bằng cách sử dụng hàm TEXT, bạn sẽ nhận được thông báo #VALUE! lỗi.
Giải pháp thay thế là sử dụng hàm FIELDVALUE và chỉ định trường Tên cho tham field_name đã chọn. 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á 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, công thức này sử dụng hàm ISERROR để kiểm tra xem hàm FIELDVALUE có trả về lỗi hay không.
=IF(ISERROR(FIELDVALUE(A2,"Name")),"Ô này không có kiểu dữ liệu được liên kết","Ô này có kiểu dữ liệu được liên kết")
Nếu công thức định trị lỗi thì công thức sẽ trả về văn bản "Ô này không có kiểu dữ liệu được liên kết", nếu không, công thức sẽ trả về "Ô này có kiểu dữ liệu được liên kết".
Nếu bạn chỉ muốn ngăn ứng dụng này #FIELD! , bạn có thể sử dụng:
=IFERROR(FIELDVALUE(A1,"Name"),"")
Công cụ này 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 có điều kiện một ô dựa trên việc ô đó có kiểu dữ liệu được liên kết hay không. Trước tiên, bạn cần chọn các ô cần định dạng có điều kiện, rồi đi đến Trang đầu > Định dạng Có điều kiện > Quy tắc Mới > sử dụng công thức... Đối với công thức, bạn có thể dùng như sau:
=NOT(ISERROR(FIELDVALUE(A1,"Name")))
Trong đó ô A1 là ô trên cùng trong dải ô 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ề TRUE và định dạng sẽ được áp dụng. Nếu ô A1 không chứa kiểu dữ liệu được liên kết thì công thức trả về FALSE và không có định dạng nào được áp dụng. Thay vào đó, bạn có thể loại bỏ NOT nếu muốn tô sáng bất kỳ ô nào không chứa kiểu dữ liệu được liên kết hợp lệ.
VBA
Có một số 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 kiểu dữ liệu được liên kết hay không. Thủ tục đầ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
Thủ tục tiếp theo 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 này là một hàm do người dùng xác định (UDF) và bạn tham chiếu nó giống như mọi công Excel khác. Chỉ cần nhập =fn_IsLinkedDataType(A1),trong đó A1 là ô 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 cứ ví dụ nào trong số này, nhấn Alt+F11 để mở Trình soạn thảo Visual Basic (VBE), rồi đi đến Chèn Mô-đun> vàdán mã vào cửa sổ mới mở ra ở bên phải. Bạn có thể sử dụng Alt+Q để thoát Excel sau khi 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 > Mã> Macros > chọn macro mà bạn muốn chạy từ danh sách, sau đó chọn Chạy.
Bạn cần thêm trợ giúp?
Bạn luôn có thể hỏi chuyên gia trong Cộng đồng kỹ thuật Excel hoặc nhận hỗ trợ trong Cộng đồng.