Jeremy đặt ra một vấn đề dựa trên hai ô A1 và C1. Các ô này được thiết kế để chứa inch và milimét tương ứng.

Jeremy muốn một cách mà ai đó có thể nhập một giá trị vào A1 và nó sẽ được chuyển đổi thành milimét trong C1. Ngược lại, họ có thể nhập một giá trị vào C1 và nó sẽ được chuyển đổi thành inch trong A1.

Tất nhiên, thực hiện chuyển đổi không phải là vấn đề thực sự. Vấn đề là nếu ai đó nhập một giá trị vào ô A1, giá trị đó sẽ ghi đè lên bất kỳ công thức nào có thể có trong ô đó và có nghĩa là bất kỳ giá trị nào tiếp theo được nhập vào ô C1 sẽ không cung cấp chuyển đổi bắt buộc trong ô A1 đã được ghi đè trước đó.

Có một số cách khác nhau để tiếp cận điều này. Nếu bạn không ngại mở rộng thiết kế trang tính của mình để bao gồm thêm hai ô, những ô đó có thể được sử dụng nghiêm ngặt cho đầu vào và các ô A1 và C1 có thể được sử dụng nghiêm ngặt cho đầu ra. Một trong các ô đầu vào có thể chứa giá trị được chuyển đổi và ô kia có thể chứa đơn vị đo lường của giá trị đầu vào (ví dụ: tính bằng hoặc mm).

Tất nhiên, nếu bạn muốn thực sự giới hạn mình ở hai ô, thì bạn sẽ cần sử dụng macro để thực hiện chuyển đổi thực tế. Bạn có thể sử dụng sự kiện trang tính được kích hoạt mỗi khi giá trị ô được thay đổi và trình xử lý sự kiện có thể kiểm tra xem ô được thay đổi là A1 hay C1. Macro sau đây đưa ra một ví dụ về cách điều này có thể hoạt động:

Private Sub Worksheet_Change(ByVal Target As Range)

Application.EnableEvents = False     With ActiveSheet         If Target = .[A1] Then             .[C1].Value = .[A1].Value * 25.4         ElseIf Target = .[C1] Then             .[A1].Value = .[C1].Value / 25.4         End If     End With     Application.EnableEvents = True End Sub

Lưu ý rằng bạn không cần phải có bất kỳ công thức nào trong các ô A1 hoặc C1; các công thức nằm trong macro. Nếu có sự thay đổi trong ô A1 (inch được nhập bởi người dùng), thì giá trị trong ô C1 sẽ bị thay đổi bởi macro. Tương tự như vậy, nếu có thay đổi trong ô C1 (milimét được nhập bởi người dùng), thì giá trị trong ô A1 sẽ bị thay đổi bởi macro.

Thay đổi trong bất kỳ ô nào khác ngoài A1 hoặc C1 sẽ bị macro bỏ qua.

_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 (9581) áp dụng cho Microsoft Excel 2007, 2010, 2013, 2016, 2019 và Excel trong Office 365. Bạn có thể tìm thấy phiên bản của mẹo này cho giao diện menu cũ hơn của Excel tại đây: