Bôi màu ô excel từ phép tính

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

vova2209

Thành viên tích cực
Tham gia
5/4/17
Bài viết
835
Được thích
112
Giới tính
Nam
Nghề nghiệp
Đường bộ
Chào anh chị! có cách nào bôi màu được những ô trong công thức tính không ạ. Anh chị giúp em code bôi màu:
Tại địa chỉ ô G8 có chứa địa chỉ các công thức tính toán, em muốn khi chỉ vào ô G8 chạy code thì sẽ bôi màu những địa chỉ có trong ô G8
Capture.JPG
 

File đính kèm

  • Boi mau.xlsx
    8.6 KB · Đọc: 3
Upvote 0

vova2209

Chỉ có cái ảnh dưới, bạn nhìn vào sẽ hiểu.

Tôi chưa viết mã tôi chỉ có hướng dẫn đơn giản.

Nếu bạn biết đến Add-in FormulaBeautify trong tài nguyên, tôi viết 1 hàm duy nhất để phân tích biểu thức.
Hàm đó phân tích đầy đủ công thức, giá trị, bảng, Named, liên kết ô.

Tận dụng hàm đó bạn sẽ có được tất cả các vùng được liên kết đến. Sau đó bạn sử dụng cách tạo các Shape tại các ô liên kết. Tạo mủi tên trỏ đến Shape tại ô Target.

Mỗi shape lại thêm link để khi click vào sẽ đi đến vùng ô đó.

Cách đơn giản nhất là hiện các mủi tên liên kết:

JavaScript:
Sub ShowPrecedents()
  On Error Resume Next
  ActiveSheet.ClearArrows
  ActiveCell.ShowPrecedents
End Sub



1680876378668.png
 
Lần chỉnh sửa cuối:
Upvote 0

vova2209

Chỉ có cái ảnh dưới, bạn nhìn vào sẽ hiểu.

Tôi chưa viết mã tôi chỉ có hướng dẫn đơn giản.

Nếu bạn biết đến Add-in FormulaBeautify trong tài nguyên, tôi viết 1 hàm duy nhất để phân tích biểu thức.
Hàm đó phân tích đầy đủ công thức, giá trị, bảng, Named, liên kết ô.

Tận dụng hàm đó bạn sẽ có được tất cả các vùng được liên kết đến. Sau đó bạn sử dụng cách tạo các Shape tại các ô liên kết. Tạo mủi tên trỏ đến Shape tại ô Target.

Mỗi shape lại thêm link để khi click vào sẽ đi đến vùng ô đó.

Cách đơn giản nhất là hiện các mủi tên liên kết:

JavaScript:
Sub ShowPrecedents()
  On Error Resume Next
  ActiveSheet.ClearArrows
  ActiveCell.ShowPrecedents
End Sub



View attachment 288629
Vâng em cảm ơn anh nhiều!
 
Upvote 0
Câu trả lời là: có.
...
Có thì có, nhưng mục đích của việc làm rối rắm ấy là gì?

Ví dụ vào ô A1, bôi màu các ô được công thức trong A1 nhắc tới.
Nhảy qua ô A2, xóa màu các ô trên và bôi màu theo A2.
Nhảy qua A3, ....
Kết quả: màn hình cứ chớp lia lịa để đổi màu. Chỉ tưởng tượng viễn ảnh này đã thấy rợn óc rồi. :p
 
Upvote 0
Có thì có, nhưng mục đích của việc làm rối rắm ấy là gì?

Ví dụ vào ô A1, bôi màu các ô được công thức trong A1 nhắc tới.
Nhảy qua ô A2, xóa màu các ô trên và bôi màu theo A2.
Nhảy qua A3, ....
Kết quả: màn hình cứ chớp lia lịa để đổi màu. Chỉ tưởng tượng viễn ảnh này đã thấy rợn óc rồi. :p
Cũng ít dùng thôi anh chị ạ. Nhưng có lúc xem 1 công thức mà cộng tận 20 ô excel ở các vị trí khác nhau tìm lồi mắt, nên em muốn hiển thị được các ô trong công thức đó ạ
 
Upvote 0
Em thấy Excel đã tự tô màu. Chẳng những vậy, còn tô màu riêng biệt theo địa chỉ mà?
1680909282973.png
 
Upvote 0
Em thấy Excel đã tự tô màu. Chẳng những vậy, còn tô màu riêng biệt theo địa chỉ mà?
View attachment 288646
Trường hợp a1+a1000000 thì sao nhẩy?

Khác: cái này không hiểu so với trace thì có hay hơn không nhỉ?
Tớ chỉ mong nếu mà sửa được cái bảng trace có thể kéo dài ra để xem địa chỉ thì hay hơn, chứ tô màu từ link bên sheet khác, file khác thì đi tìm "màu ơi mi ở đâu" cũng ốm.
 
Upvote 0
Vậy nhiều ô chưa công thức mà tô cùng màu thì làm sao anh biết các ô địa chỉ thuộc ô chứa công thức nào ?
Thớt chưa thực hiện được cho nên chưa biết những việc phức tạp khác do chuyện này gây nên.
Ví dụ tham chiếu cả một Table thì bôi màu cả Table ấy?
Hàm Indirect, hàm Offset? UDF? (bên trong cái UDF có tham chiếu đến range khác)
 
Upvote 0
Thớt tương tác kém quá. Bài #3 vẫn chưa thấy trả lời.

Còn 1 vấn đề thế này: nếu chuyển sang địa chỉ ô khác thì làm sao biết được những ô đã tô màu trước đó để xóa. Đang làm thì dễ, lỡ đóng file nghỉ làm, mai mở ra lại thì đâu còn lưu địa chỉ. Tất nhiên vẫn có cách nhưng vẫn có những bất cập.
 
Upvote 0
Thớt tương tác kém quá. Bài #3 vẫn chưa thấy trả lời.

Còn 1 vấn đề thế này: nếu chuyển sang địa chỉ ô khác thì làm sao biết được những ô đã tô màu trước đó để xóa. Đang làm thì dễ, lỡ đóng file nghỉ làm, mai mở ra lại thì đâu còn lưu địa chỉ. Tất nhiên vẫn có cách nhưng vẫn có những bất cập.
Em đang đi công trường ạ.
ý tưởng là bôi hoặc đánh dấu để xem được là hàm đó liên kết với các ô excel nào.
Đoạn code của anh HeSanbi hiện lên dấu mũi tên lên không bị lẫn mầu như ý định lúc đầu em yêu cầu
 
Upvote 0
Em đang đi công trường ạ.
ý tưởng là bôi hoặc đánh dấu để xem được là hàm đó liên kết với các ô excel nào.
Đoạn code của anh HeSanbi hiện lên dấu mũi tên lên không bị lẫn mầu như ý định lúc đầu em yêu cầu
Vẫn chưa trả lời nội dung của bài #3.
 
Upvote 0
Còn 1 vấn đề thế này: nếu chuyển sang địa chỉ ô khác thì làm sao biết được những ô đã tô màu trước đó để xóa. ...
1. Dùng một mảng Global (biến toàn cục) để chứa những chỗ đang tô màu - và nếu cẩn thận thì chứa nguyên thủy chúng màu gì.

2. Ở bài #6 tôi có nhắc việc xóa, tô sẽ làm cho bảng tính chớp lia lịa.
 
Upvote 0
Thớt chưa thực hiện được cho nên chưa biết những việc phức tạp khác do chuyện này gây nên.
Ví dụ tham chiếu cả một Table thì bôi màu cả Table ấy?
Hàm Indirect, hàm Offset? UDF? (bên trong cái UDF có tham chiếu đến range khác)
Em đã thử rồi ạ, Trong bảng tính của em thi thoảng hay dính 1 hàm chỉ có cộng và trừ địa chỉ là các range trong bảng.
 
Upvote 0
1. Dùng một mảng Global (biến toàn cục) để chứa những chỗ đang tô màu - và nếu cẩn thận thì chứa nguyên thủy chúng màu gì.

2. Ở bài #6 tôi có nhắc việc xóa, tô sẽ làm cho bảng tính chớp lia lịa.
Em cũng nghĩ như vậy nhưng khi đóng file mà chưa xoá màu đã tô thì biến toàn cục chịu thua. Để giải quyết thì phải lưu chỗ nào đó trên bảng tính.
 
Upvote 0
Định trả lời mà thấy câu này của anh laij rén
@vova2209 Và rồi những công thức có liên kết với sheet khác thì làm thế nào? Cũng bôi màu à?
Mỗi người 1 tính bạn ạ, mình không biết mình mới hỏi cứ vào vặn vẹo nhau làm gì nhỉ. Các bạn GPE nhiệt tình đưa ra thêm các tình huống khác mà mình chưa biết sẽ sảy ra. Các file tính của mình thi thoảng đụng phải công thức tính trong 1 sheets thôi, vì công thức cộng dài quá và mỗi địa chỉ cách nhau hàng trăm dòng nên khi thoát công thức tìm sẽ vất vả.
 
Upvote 0
Em cũng nghĩ như vậy nhưng khi đóng file mà chưa xoá màu đã tô thì biến toàn cục chịu thua. Để giải quyết thì phải lưu chỗ nào đó trên bảng tính.
Không quan trọng. Với trình độ người viết code mà thớt đã chọn thì hộ tự biết cách "dọn rác".
Theo tôn chỉ dân chuyên nghiệp code, nếu không biết dọn rác thì viết code nhằng nhì vào những chỗ ngoài căn bản là vô trách nhiệm.
 
Upvote 0
Web KT

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

Back
Top Bottom