nguoirung1234
Thành viên mới
- Tham gia
- 12/3/07
- Bài viết
- 45
- Được thích
- 12
Giả sử ta tạo 1 UDF đơn giản sau :
Tiếp theo, ta đặt UDF này vào 1 ô nào đó (ví dụ B1). Tất nhiên kết quả hàm cho ra là 0. Bây giờ, ta gõ vào A1 và A2 số bất kỳ (ví dụ A1=1, A2=2); ô B1 vẫn là 0. Nghĩa là Excel không tính lại UDF khi thay đổi ô A1 và A2.
Theo em hiểu thì nguyên nhân là do cách tính toán lại thông minh của Excel để tăng tốc độ tính toán : nó chỉ tính toán lại các công thức có tham chiếu đến ô vừa thay đổi giá trị.
Bây giờ, ta thay đổi UDF 1 chút :
Và trong ô B1 ta gõ =CONG(A1:A2). Lúc này, nếu thay đổi A1 hay A2 thì B1 cập nhật ngay.
Nhưng nếu ta dùng UDF có tham số như vậy trong 1 vùng lớn hàng ngàn ô thì tốc độ tính toán lại chậm vô cùng. Các anh chị có giải pháp nào hay hơn xin chỉ giúp (tất nhiên là vẫn dùng UDF chứ không phải thay bằng công thức)
Mã:
Function CONG()
CONG=Range("A1")+Range("A2")
End Function
Theo em hiểu thì nguyên nhân là do cách tính toán lại thông minh của Excel để tăng tốc độ tính toán : nó chỉ tính toán lại các công thức có tham chiếu đến ô vừa thay đổi giá trị.
Bây giờ, ta thay đổi UDF 1 chút :
Mã:
Function CONG(R As Range)
CONG=Range("A1")+Range("A2")
End Function
Nhưng nếu ta dùng UDF có tham số như vậy trong 1 vùng lớn hàng ngàn ô thì tốc độ tính toán lại chậm vô cùng. Các anh chị có giải pháp nào hay hơn xin chỉ giúp (tất nhiên là vẫn dùng UDF chứ không phải thay bằng công thức)