Nếu bạn có một công thức trong một trang tính và ô được tham chiếu bởi công thức là trống, thì công thức vẫn trả về giá trị 0. Ví dụ: nếu bạn có công thức = A3, thì công thức trả về nội dung của ô A3, trừ khi ô A3 trống. Trong trường hợp đó, công thức trả về giá trị bằng không.

Điều này dường như liên quan đến ý tưởng rằng không thể có công thức trả về giá trị trống, khi “trống” được sử dụng đồng nghĩa với “trống”.

Tuy nhiên, bạn có thể mở rộng công thức của mình một chút để nó trả về một chuỗi trống. Thay vì sử dụng = A3 làm công thức của bạn, bạn sẽ sử dụng như sau:

=IF(ISBLANK(A3),"",A3)

Công thức này sử dụng ISBLANK, trả về True hoặc False, tùy thuộc vào việc ô được tham chiếu (A3) có trống hay không. Sau đó, hàm IF trả về một chuỗi trống (“”) nếu A3 trống hoặc nó sử dụng giá trị trong A3 nếu A3 không trống.

Bất kể công thức trả về là gì, bạn vẫn có thể sử dụng kết quả của nó trong các công thức khác và nó sẽ hoạt động tốt. Ngay cả khi nó trả về một chuỗi rỗng, nó vẫn được các công thức khác xử lý như thể nó chứa 0.

Trong các khu vực mà việc xử lý ô như thể nó chứa số 0 có thể là vấn đề (chẳng hạn như khi bạn lập biểu đồ kết quả của công thức), thì bạn có thể sửa đổi công thức một chút, như được hiển thị ở đây:

=IF(ISBLANK(A3),NA(),A3)

Công thức này trả về lỗi # N / A nếu A3 trống. Lỗi này lan truyền qua các công thức khác tham chiếu công thức, nhưng lỗi # N / A được bỏ qua hoàn toàn khi lập biểu đồ.

Trong khi các giải pháp trên là thỏa mãn đối với hầu hết mọi người, một số người thực sự muốn thấy một ô đích thực sự trống nếu ô nguồn trống. Ví dụ: bạn có thể muốn ô B7 để trống nếu ô A3 trống. Nếu bạn đặt một công thức vào ô B7 (như đã thảo luận), thì ô B7 không thực sự trống — nó chứa một công thức.

Nếu đây là mục tiêu của bạn — “khoảng trống” thực sự — thì bạn chỉ có thể đạt được nó thông qua việc sử dụng macro. Macro sẽ cần kiểm tra xem ô nguồn có bị thay đổi hay không. Nếu có, thì bất cứ thứ gì trong nguồn cần được sao chép vào ô đích.

Private Sub Worksheet_Change(ByVal Target As Excel.Range)

Dim rMonitor As Range     Dim rTarget As Range

Set rMonitor = Range("A3")

Set rTarget = Range("B7")



If Not Intersect(Target, rMonitor) Is Nothing Then         rMonitor.Copy rTarget     End If

Set rMonitor = Nothing     Set rTarget = Nothing End Sub

_Lưu ý: _

Nếu bạn muốn biết cách sử dụng các macro được mô tả trên trang này (hoặc trên bất kỳ trang nào khác trên trang ExcelTips), tôi đã chuẩn bị một trang đặc biệt bao gồm thông tin hữu ích.

ExcelTips là nguồn của bạn để đào tạo Microsoft Excel hiệu quả về chi phí.

Mẹo này (2174) áp dụng cho Microsoft Excel 97, 2000, 2002 và 2003. Bạn có thể tìm thấy phiên bản của mẹo này cho giao diện ribbon của Excel (Excel 2007 trở lên) tại đây: