Có cách nào trong excell có thể tương tác ngược giữa các ô?

Liên hệ QC

sukoharin

Thành viên mới
Tham gia
23/1/13
Bài viết
26
Được thích
0
Có cách nào trong excell có thể tương tác ngược giữa các ô cụ thể là:
Lúc đầu A1 là 500
Công thức B1 là =A1*20 khi hiển thị là 10000
Làm cách nào để nhập 2000 vào ô B1 thì A1 sẽ tự động là 1000 mà không cần phải nhập lại công thức ngược nữa.
Thanks
 
Không thể dùng công thức excel đồng thời tại 2 ô trong trường hợp này vì sẽ xảy ra lỗi lặp vòng. Dùng tạm thủ tục worksheet_Change()!! Bạn enable macro rồi test nhé!
 

File đính kèm

Cái này hay nè cho mình xin về học hỏi nhe
 
Lần chỉnh sửa cuối:
Áp dụng cho một phép tính cụ thể thì được.
Thực tế thì chẳng ai viết hết các phép toán trong công thức rồi đưa vào VBA. Nếu không phải là 20 mà 1 con số khác, toán tử khác, hoặc sử dụng hàm, công thức.
Ví dụ: B1 gõ công thức =A1^2, vậy phải viết code cho A1 là căn bậc 2 của B1; B2 gõ công thức =A2^2-500/A2+ * ..., vậy phải viết code cho A2 là ... ; ... Làm sao để Excel hiểu được khi gõ công thức tại cột B thì sẽ có 1 bài toán ngược cho cột A? Cho đến dăm chục năm nữa thì điều đó là không thể. Nói vậy vì biết đâu máy tinh thông minh thay thế được bộ óc con người.
 
Áp dụng cho một phép tính cụ thể thì được.
Thực tế thì chẳng ai viết hết các phép toán trong công thức rồi đưa vào VBA. Nếu không phải là 20 mà 1 con số khác, toán tử khác, hoặc sử dụng hàm, công thức.
Ví dụ: B1 gõ công thức =A1^2, vậy phải viết code cho A1 là căn bậc 2 của B1; B2 gõ công thức =A2^2-500/A2+ * ..., vậy phải viết code cho A2 là ... ; ... Làm sao để Excel hiểu được khi gõ công thức tại cột B thì sẽ có 1 bài toán ngược cho cột A? Cho đến dăm chục năm nữa thì điều đó là không thể. Nói vậy vì biết đâu máy tinh thông minh thay thế được bộ óc con người.
Mọi người trong diễn đàn chỉ đưa ra giải pháp chung nhất để chủ topic tìm hiểu, nghiên cứu và học hỏi, sau đó tự áp dụng cho những trường hợp của mình. Tôi rất không đồng ý với nhiều thành viên, "ném" file lên diễn đàn để mọi người làm cho từ A đến Z, làm không đúng ý mình còn tỏ thái độ này nọ. Những bạn như thế sẽ không học hỏi được gì, chỉ mong trút mớ việc để người khác giải quyết!!
 
Không thể dùng công thức excel đồng thời tại 2 ô trong trường hợp này vì sẽ xảy ra lỗi lặp vòng. Dùng tạm thủ tục worksheet_Change()!! Bạn enable macro rồi test nhé!
Cái này cũng phải thêm Application.EnableEvents = False và Application.EnableEvents = True vào chứ nhỉ?
 
Cái này cũng phải thêm Application.EnableEvents = False và Application.EnableEvents = True vào chứ nhỉ?
Hiện tại file test không xảy ra hiện tượng lặp vòng trong code nên không cần bạn ạ. Lúc đầu mình hiểu rằng khi thay đổi giá trị B1 thì A1 thay đổi, và khi đó sẽ chạy tiếp thủ tục worksheet_Change() cho trường hợp target.column=1. Tuy nhiên hiện tượng này không thấy xảy ra.
 
Có cách nào trong excell có thể tương tác ngược giữa các ô cụ thể là:
Lúc đầu A1 là 500
Công thức B1 là =A1*20 khi hiển thị là 10000
Làm cách nào để nhập 2000 vào ô B1 thì A1 sẽ tự động là 1000 mà không cần phải nhập lại công thức ngược nữa.
Thanks

Đây chỉ là một trường hợp của GoalSeek
 

File đính kèm

Hiện tại file test không xảy ra hiện tượng lặp vòng trong code nên không cần bạn ạ. Lúc đầu mình hiểu rằng khi thay đổi giá trị B1 thì A1 thay đổi, và khi đó sẽ chạy tiếp thủ tục worksheet_Change() cho trường hợp target.column=1. Tuy nhiên hiện tượng này không thấy xảy ra.
Em cũng thắc mắc sao lại không ra lỗi, đến khi bấm F8 thì thấy nó chạy không ngừng. Thì ra nó lặp vô tận mà mình không phát hiện ra, do mình chỉ nhìn thấy giá trị A1 và B1 chỉ thay đổi 1 lần.
Nên em thử sửa lại thành:
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Then Cells(Target.Row, Target.Column - 1).Formula = Target.Value / 20
If Target.Column = 1 Then Cells(Target.Row, Target.Column + 1).Formula = Target.Value [COLOR=#ff0000]+ 20[/COLOR]
End Sub
Thì có lỗi
 
Lần chỉnh sửa cuối:
Áp dụng cho một phép tính cụ thể thì được.
Thực tế thì chẳng ai viết hết các phép toán trong công thức rồi đưa vào VBA. Nếu không phải là 20 mà 1 con số khác, toán tử khác, hoặc sử dụng hàm, công thức.
Ví dụ: B1 gõ công thức =A1^2, vậy phải viết code cho A1 là căn bậc 2 của B1; B2 gõ công thức =A2^2-500/A2+ * ..., vậy phải viết code cho A2 là ... ; ... Làm sao để Excel hiểu được khi gõ công thức tại cột B thì sẽ có 1 bài toán ngược cho cột A? Cho đến dăm chục năm nữa thì điều đó là không thể. Nói vậy vì biết đâu máy tinh thông minh thay thế được bộ óc con người.

Bắt buộc phải gải quyết (đại khái) như bài #2 thôi. Bài này nếu làm cho đến tận gốc thì khó bỏ bố. Từ việc đưa ra phương án cho đến lúc thực hiện qua nhiều giai đoạn phân tích. Tôi ví dụ 1 phương án cho bạn thấy mức độ phức tạp của nó:

- Tôi xác định là có 1 liên hệ hàm số giữa A và B
- Tại cột C, tôi đặt là cột định liên hệ này. Như vậy C1 mang một giá trị chuõi/string là "B = A * 20"
- Trong code, tôi đặt một hàm chuyên đọc ô C và diễn giải công thức.
- Nếu ô thay đổi là A thì tôi chỉ việc dùng công thức trên để tính B.
- Nếu ô thay đổi là B thì tôi phải dùng phép nghịch hàm để tính A.
- Phép nghịch hàm có nhiều khương án. Một trong những phương án khả thi là dùng cách tương tự như Goalseek - mò dần dần.
 
Web KT

Bài viết mới nhất

Back
Top Bottom