Mike có ba ô (A1: A3) hiển thị kết quả của các phép tính. Anh ta cần một cách để xác định giá trị lớn nhất đã từng xuất hiện trong bất kỳ ô nào trong số này và có giá trị đó được lưu trữ trong ô E5. Anh ta biết cách đạt được mức tối đa trong số ba, nhưng khi anh ta tính toán lại trang tính, nếu các giá trị trong A1: A3 nhỏ hơn giá trị lớn nhất trong E5 (dựa trên các xác định trước đó về giá trị tối đa trong A1: A3), thì E5 không nên thay đổi. Nói cách khác, E5 chỉ nên thay đổi nếu bất kỳ giá trị nào trong A1: A3 lớn hơn giá trị trong E5. Mike không chắc làm thế nào để thực hiện một phép tính như vậy.

Có hai cách bạn có thể giải quyết vấn đề này. Đầu tiên là tạo một công thức đơn giản sẽ được đặt trong ô E5:

=MAX(A1:A3,E5)

Hàm MAX kiểm tra các giá trị khác nhau mà nó tham chiếu và sau đó trả về giá trị tối đa trong số chúng — chính xác những gì mong muốn. Tuy nhiên, vì công thức này đang được đặt trong ô E5 và nó cũng tham chiếu đến E5, nó sẽ trả về lỗi. Điều này là do công thức tạo ra một tham chiếu vòng tròn. Excel có thể xử lý những điều đó, nhưng bạn cần thực hiện một thay đổi cấu hình nhỏ để làm điều đó:

  1. Chọn Tùy chọn từ menu Công cụ. Excel sẽ hiển thị hộp thoại Tùy chọn.

  2. Hiển thị tab Tính toán. (Xem Hình 1.)

  3. Đảm bảo rằng hộp kiểm Lặp lại được chọn.

  4. Bấm OK.

Bây giờ Excel sẽ xử lý các tham chiếu vòng tròn, chẳng hạn như công thức đơn giản mà bạn đã đặt trong ô E5.

Cách tiếp cận thứ hai là sử dụng macro để thực hiện phép tính. Cách tiếp cận này có thể được ưu tiên vì bạn có thể không muốn (vì lý do nào đó) bật tham chiếu vòng tròn trong sổ làm việc của mình. Phần sau thực sự là một trình xử lý sự kiện, được thêm vào mã cho trang tính. (Phương pháp dễ nhất:

Nhấp chuột phải vào tab trang tính, hiển thị cửa sổ mã từ trình đơn Ngữ cảnh kết quả và thêm macro vào cửa sổ mã đó.)

Private Sub Worksheet_Calculate()

Dim dMax As Double     dMax = Application.WorksheetFunction.Max(Range("A1:A3"))

If dMax > Range("E5") Then         Application.EnableEvents = False         Range("E5") = dMax         Application.EnableEvents = True     End If End Sub

Macro được kích hoạt mỗi khi trang tính được tính toán lại. Nó lấy tối đa A1: A3 và so sánh nó với những gì trong E5. Chỉ khi nó lớn hơn thì giá trị đó mới được đặt vào E5.

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