Trong khi sử dụng hàm IF, Vineet muốn giữ lại giá trị cũ trong ô nếu điều kiện sai. Nói cách khác, giá trị trong ô nơi hàm IF được sử dụng sẽ chỉ thay đổi nếu điều kiện đang được kiểm tra bởi hàm IF là đúng. Tuy nhiên, theo mặc định, hàm IF tạo giá trị 0 nếu điều kiện là Sai.

Hàm IF có thể có tới ba tham số. Tham số đầu tiên là so sánh sẽ được thực hiện, tham số thứ hai là những gì sẽ được trả về nếu so sánh là đúng và thứ ba là những gì sẽ được trả về nếu so sánh là sai. Có thể bỏ đi tham số cuối cùng, nhưng nếu bạn làm như vậy thì Excel sẽ trả về giá trị 0 nếu so sánh là sai. (Đây là những gì Vineet nhìn thấy được trả về bằng cách sử dụng hàm IF của anh ấy.)

Sau đó, giải pháp rõ ràng là đảm bảo rằng bạn cung cấp cho hàm IF một thứ gì đó sẽ được trả về khi so sánh là sai. Ví dụ, giả sử rằng công thức của bạn nằm trong ô B1 và ​​bạn đang so sánh một cái gì đó trong ô A1. Công thức bạn sử dụng có thể giống như sau:

=IF(A1<10,"under ten",B1)

Lưu ý rằng các từ “dưới mười” được trả về nếu giá trị trong A1 nhỏ hơn 10. Nếu điều kiện này không được đáp ứng, thì giá trị trong B1 được trả về.

Vì công thức này nằm trong ô B1, điều này có nghĩa là giá trị trước đó trong ô được trả về nếu điều kiện sai.

Nó cũng có nghĩa là công thức chứa một tham chiếu vòng tròn. Để các tham chiếu vòng tròn hoạt động OK, bạn cần cho Excel biết rằng chúng có thể xuất hiện trong trang tính của bạn. Chọn công cụ | Tùy chọn | Tab Tính toán và đảm bảo hộp kiểm Lặp lại được chọn. Bây giờ Excel sẽ cho phép tham chiếu vòng tròn mà không có khiếu nại.

Nếu bạn không muốn cho phép tham chiếu vòng tròn trong trang tính của mình, thì cách duy nhất là tạo macro cập nhật giá trị trong ô B1 dựa trên bất kỳ thay đổi nào đối với ô A1:

Private Sub Workbook_SheetChange(ByVal Sh As Object, _   ByVal Target As Range)



' See if the change is related to our cell     If Not (Application.Intersect(Target, Range("A1")) _       Is Nothing) Then         If Range("A1") < 10 Then             Range("B1") = "under ten"

End If     End If End Sub

Macro đơn giản này, khi được thêm vào mô-đun ThisWorkbook, được thực thi mỗi khi có thay đổi trong sổ làm việc. Nếu giá trị của ô A1 bị thay đổi (và chỉ ô đó), thì giá trị đó sẽ được kiểm tra xem nó có nhỏ hơn 10. Nếu đúng, thì giá trị trong ô B1 sẽ bị thay đổi. Nếu không, thì giá trị trong ô B1 được để một mình.

Có một “gottcha” mà bạn cần ghi nhớ với bất kỳ cách tiếp cận nào được thảo luận cho đến nay, đó là công thức hoặc macro. Nếu giá trị trong ô A1 là (giả sử) 15, thì ô B1 sẽ chứa những gì ở đó trước đó, bất kể nó là gì. Nếu bạn thay đổi giá trị trong ô A1 thành (giả sử) 7, thì B1 sẽ thay đổi thành “dưới mười”. Điều đó tốt, nhưng từ thời điểm đó trở đi ô B1 sẽ không bao giờ thay đổi. Tại sao? Bởi vì nếu sau đó bạn thay đổi ô A1 thành giá trị lớn hơn 10, ô B1 sẽ chứa (như vừa giải thích) những gì đã có trước đó. Và, như bạn đã hiểu, giá trị ở đó trước đây là kết quả của kết quả true trước đó, là “dưới mười”. Do đó, đúng hay sai, công thức hoặc macro từ thời điểm này trở đi sẽ hiển thị văn bản “dưới mười”.

_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 (8260) á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: