Định dạng màu cho các ô chứa dữ liệu, công thức trên trang tính

Liên hệ QC

connhangheo

Thành viên thường trực
Tham gia
18/5/07
Bài viết
214
Được thích
225
Nghề nghiệp
Sinh Viên
em muốn hỏi làm thế nào để cho những ô có chứa công thức sẽ có 1 màu, các ô khác có chứa giá trị nhưng do mình nhập thì lại có 1 màu khác? Mong các bác giúp đỡ. Thanks
 
Cái này bạn thực hiện Record macro là ra ngay mà... Có lần tôi dc bác SA_DQ hướng dẩn và làm dc code như sau:
Mã:
Sub TOMAU()
Selection.SpecialCells(xlCellTypeFormulas, 23).Select
    Selection.Font.ColorIndex = 3
    With Selection.Interior
        .ColorIndex = 6
        .Pattern = xlSolid
    End With
End Sub
Bạn tạo 1 vài công thức rồi chạy macro này thử xem
Mến
ANH TUẤN
 
Chỉnh sửa lần cuối bởi điều hành viên:
/-(ãy dùng lệnh Goto trong menu Edit

Bạn cứ Goto, sao đó tô màu thôi;
Còn nếu muốn sau khi nhập công thức thì tô màu thì ghi macro để làm việc đó giúp bạn!
Sau đây là 1 vì dụ
Mã:
[B]Private Sub Worksheet_Change(ByVal Target As Range)[/b]
 If Target.HasFormula Then
     Target.Interior.ColorIndex = 38    [COLOR="Blue"] 'Bạn có thể chọn các số từ 34-40[/COLOR]
 End If [b]
End Sub [/b]
 
Lần chỉnh sửa cuối:
SA_DQ đã viết:
Bạn cứ Goto, sao đó tô màu thôi;
Còn nếu muốn sau khi nhập công thức thì tô màu thì ghi macro để lam việc đó giúp bạn!
Sau đây là 1 vì dụ
Mã:
[B]Private Sub Worksheet_Change(ByVal Target As Range)[/B]
 If Target.HasFormula Then
     Target.Interior.ColorIndex = 38    [COLOR=blue] 'Bạn có thể chọn các số từ 34-40[/COLOR]
 End If 
[B]End Sub [/B]
sao em ko thấy hiệu quả gì thế nhỉ, các ô chứa công thức vẫn thế
 
Code trên Chỉ có tác dụng với những ô bạn vừa nhập công thức vào thôi.
Bạn hãy thử nhập 1 công thức xem sao .

Thân!
 
Nhân bạn hỏi về vấn đề tô màu cho cell công thức tôi lại nghĩ đến 1 yêu cầu khác:
Tôi giã sử file của tôi có 1 số công thức... trong đó có 1 vài cell đã dc tô màu... (là tự mình tô màu chứ ko phải do macro)... Khi tôi chạy SUB đễ đánh dấu những cell chứa công thức thì làm thế nào cho nó nhớ dc những định dạng củ đễ khi tôi chạy 1 SUB khác (tạm gọi là TRỞ VỀ) thì đâu lại vào đó... Trước đó như thế nào thì trả về như thế nấy!
Mong các cao thủ góp ý về yêu cầu này!
ANH TUẤN
 
Nhân bàn về vấn đề tô màu cho cell công thức tôi lại nghĩ đến 1 yêu cầu khác: Tôi giã sử file của tôi có 1 số công thức... trong đó có 1 vài cell đã dc tô màu... (là tự mình tô màu chứ ko phải do macro)... Khi tôi chạy SUB đễ đánh dấu những cell chứa công thức thì làm thế nào cho nó nhớ dc những định dạng củ đễ khi tôi chạy 1 SUB khác (tạm gọi là TRỞ VỀ) thì đâu lại vào đó... Trước đó như thế nào thì trả về như thế nấy!
Anh chàng Tuấn này ra đề bài quá rọng, này nhé,
* Mấy cells mà bạn tô màu trước rồi là tô màu NTN?, màu nền hay màu Font?
Mà màu này đến (56 - 2) loại # nhau; thì phải mấy hàm IF để dò tìm cho hết được (?)
* /)/hư vậy chúng ta phải đi từ bài toán đơn giản nhứt, như sau:
Một vài ô công thức đã được tô màu nền với Index = 35 ;
Macro tô màu sẽ tô ~ ô công thức còn lại là màu có Index = 40;
Lúc đó macro TroVe() sẽ có thể thực hiện được, nếu chạy macro tô màu xong, ta chưa lưu file excel này!
Chuyên phải làm là trước khi ToMau() thì khai báo biến Rng As Range
Lưu các Cells mà bạn đã tô màu vô biến này cho đến khi file excel còn mở,. . .

Mới nghĩ ra vậy thôi, Tuan cho í kiến nha!

--=--
 
Mr Okebab đã viết:
Code trên Chỉ có tác dụng với những ô bạn vừa nhập công thức vào thôi.
Bạn hãy thử nhập 1 công thức xem sao .

Thân!
em vẫn ko làm được bác ah, chỉ có sub của bác ANHTUAN là chạy ngon lành thôi.Bác giúp em xem cái này cái nhé.
anhtuan1066 đã viết:
Nhân bạn hỏi về vấn đề tô màu cho cell công thức tôi lại nghĩ đến 1 yêu cầu khác:
Tôi giã sử file của tôi có 1 số công thức... trong đó có 1 vài cell đã dc tô màu... (là tự mình tô màu chứ ko phải do macro)... Khi tôi chạy SUB đễ đánh dấu những cell chứa công thức thì làm thế nào cho nó nhớ dc những định dạng củ đễ khi tôi chạy 1 SUB khác (tạm gọi là TRỞ VỀ) thì đâu lại vào đó... Trước đó như thế nào thì trả về như thế nấy!
Mong các cao thủ góp ý về yêu cầu này!
ANH TUẤN
cái này em em chưa kịp hỏi thì bác đã hỏi hộ em. Thanks
 
Code của bác Sa chạy tốt đấy chứ... E rằng bạn đã đặt nó ko đúng chổ!... Này nhé, vì code này có tác dụng trên Sheet nên tất nhiên bạn phải paste nó vào Sheet rồi... Đầu tiên bạn Copy code của bác Sa, sau đó click phải chuột vào Sheet tab, chọn View code, tiếp theo là Paste vào khung cửa sổ vừa mở ra... Thoát cửa sổ này và... test
Chúc thành công!
ANH TUẤN
 
anhtuan1066 đã viết:
Nhân bạn hỏi về vấn đề tô màu cho cell công thức tôi lại nghĩ đến 1 yêu cầu khác:
Tôi giã sử file của tôi có 1 số công thức... trong đó có 1 vài cell đã dc tô màu... (là tự mình tô màu chứ ko phải do macro)... Khi tôi chạy SUB đễ đánh dấu những cell chứa công thức thì làm thế nào cho nó nhớ dc những định dạng củ đễ khi tôi chạy 1 SUB khác (tạm gọi là TRỞ VỀ) thì đâu lại vào đó... Trước đó như thế nào thì trả về như thế nấy!
Mong các cao thủ góp ý về yêu cầu này!
ANH TUẤN

Nếu chỉ là 1 vài màu thì có thể làm như bác SA. Nhưng nếu quá nhiều màu, và muốn thay đổi cả ô có màu thì có lẽ phải dùng 1 Tempsheet để ghi nhớ. (Vì quá nhiều biến mà)

Khi muốn phục hồi thì dùng lại TempSheet này để định dạng lại.
Tuy nhiên cách này cũng mất khá nhiều thời gian đấy.

Thân!
 
Ko ngờ vấn đề này lại khó như thế... Tôi cứ nghĩ đơn giản là dò tìm các cell có công thức, lưu từng địa chỉ của cell + định dạng... Khi phục hồi thì lại gán tất cả vào vị trí củ... Hic....
 
anhtuan1066 đã viết:
Code của bác Sa chạy tốt đấy chứ... E rằng bạn đã đặt nó ko đúng chổ!... Này nhé, vì code này có tác dụng trên Sheet nên tất nhiên bạn phải paste nó vào Sheet rồi... Đầu tiên bạn Copy code của bác Sa, sau đó click phải chuột vào Sheet tab, chọn View code, tiếp theo là Paste vào khung cửa sổ vừa mở ra... Thoát cửa sổ này và... test
Chúc thành công!
ANH TUẤN
em để nhầm vào workbook :)

còn 1 vấn đề nữa bác ah, em muốn những ô số liệu (tức là những ô ko chứa công thức) có 1 màu riêng, để ký hiệu những ô đó có thể thay đổi được thì làm thế nào.
 
Chỉnh sửa lần cuối bởi điều hành viên:
Giờ thì chỉ giúp về đường hướng thôi nha, sao đó bạn tự làm

còn 1 vấn đề nữa bác ah, em muốn những ô số liệu (tức là những ô ko chứa công thức) có 1 màu riêng, để ký hiệu những ô đó có thể thay đổi được thì làm thế nào.
Trước tiên bạn phải nghiên cứu kĩ lệnh Goto trong menu Edit ( nhất là Goto Speacial . . .;
Để vậy, bạn lập 1 sheet có vài công thức ( SF của nó là số (như =A1 +3), chuỗi, (như =A3 & "CFC") hay logic (như =TODAY()=TODAY()-1);
Vài số liệu đã có, như trên là ô A1 chứa số 35; ô A3 chứa chuỗi: "Xin mời ". . .
Bạn thực hành lệnh Goto cho đến khi nào bạn nhuyễn với nó!
Sau đó việc còn lại là mở máy ghi ~ dòng lệnh;
. . . .
/(hi nào đủ nhiều bạn xem thử chúng có cái nào giống dười ni không nha?
Mã:
Option Explicit[b]
Sub GoTo1()[/b]
    
    Range("A1").Select
    Selection.SpecialCells(xlCellTypeFormulas, 7).Select
    Selection.SpecialCells(xlCellTypeFormulas, 20).Select
    
    Range("A1").Select
    Selection.SpecialCells(xlCellTypeConstants, 1).Select
    Selection.SpecialCells(xlCellTypeConstants, 2).Select

[b]End Sub[/b]

(húc bạn thành công, nhất là Goto!!
 
Còn nếu muốn mỗi khi di chuyển sang một dòng khác thì toàn dòng đó đổi màu, giúp cho ta dễ quan sát dòng hiện tại thì phải viết code thế nào, mong các bạn giúp đỡ
 
Các bác chỉ giúp dùm em đang cần định dạng như sau:số liệu của em phải nhập vào từng ô (có ô có ô kg) nhập trên cùng 1 cột
các chỉ số màu như sau:
từ 85 đến 100: màu xanh
Trên 100: màu vàng
Trên 119: màu cam
Trên 136: màu đỏ
Em dùng conditional formatting, nhưng chỉ trả ra có 3 màu,
số liệu em cần là 4 màu
các Bác có cách nào giúp em. (Em kg rành về macro)
Xin cảm ơn
 
Em dùng conditional formatting, nhưng chỉ trả ra có 3 màu,
số liệu em cần là 4 màu
các Bác có cách nào giúp em. (Em kg rành về macro)
Xin cảm ơn
Màu thứ tư đây:
Bạn phải chuột vô thanh sheetNames ở phải dưới cùng màn hình & chọn từ menu đổ xuống dòng cuối;
Bạn Copy & dán vô CS VBE vừa xuất hiện đoạn Code sau:

PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, Range("F1:F999")) Is Nothing And _
    Target.Value > 136 Then Target.Interior.ColorIndex = 3
End Sub

Khi đó sẽ tô cho bạn màu thứ 4, một khi bạn nhập vô cột 'F' giá trị >136
Tất nhiên nó có thể tô gần 56 màu cho bạn nếu bạn muốn;
Xem thêm phần 'Colors' trong chữ ký của mình, nếu rảnh rỗi.
 
Màu thứ tư đây:
Bạn phải chuột vô thanh sheetNames ở phải dưới cùng màn hình & chọn từ menu đổ xuống dòng cuối;
Bạn Copy & dán vô CS VBE vừa xuất hiện đoạn Code sau:

PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, Range("F1:F999")) Is Nothing And _
    Target.Value > 136 Then Target.Interior.ColorIndex = 3
End Sub

Khi đó sẽ tô cho bạn màu thứ 4, một khi bạn nhập vô cột 'F' giá trị >136
Tất nhiên nó có thể tô gần 56 màu cho bạn nếu bạn muốn;
Xem thêm phần 'Colors' trong chữ ký của mình, nếu rảnh rỗi.
Cám ơn Bác SA_DQ rất nhiều,
Em đã xem qua "color" của Bác viết, nhưng vì trình độ VBA còn rất kém nên Em kg hiểu.
Em nhờ Bác giúp cho Em thêm vấn đề này.
1. Ô đó kg có số liệu, nhưng em lại nhập số liệu vào, sau khi xóa
- Nếu định dạng bằng Conditional formating -> trả về ô trắng, mặc định của excel
- Còn số >136 (theo đoạn code của Bác) -> thì vẫn giữ nguyên màu nền ĐỎ
2. Khi định dạng lại màu nền trong Format/cells/Patterns
- Các số được định dạng bởi Conditional formating -> kg đổi màu
- Còn số >136 (theo đoạn code của Bác) -> thì bị đổi màu.
Em cảm ơn Bác.
 
Câu 1:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, Range("F1:F999")) Is Nothing Then
    If Target.Value > 136 Then
        Target.Interior.ColorIndex = 3
    Else
        Target.Interior.ColorIndex = 2
 End If:        End If
End Sub
Câu 2: Chắc phải chuyển sang xài macro cho thống nhất cách tô màu.
 
Sau Em đánh thế này, nó kg cho kết quả được. Vui lòng sửa giúp Em với
------------------
Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("F1:F999")) Is Nothing Then
If Target.Value >
136 Then
Target
.Interior.ColorIndex =
3
Else
Target.Interior.ColorIndex =
2
End
If: End
If

If Not Intersect(Target, Range("F1:F999")) Is Nothing Then
If Target.Value >
119 and Target.Value <=136 Then
Target
.Interior.ColorIndex =
46
Else
Target.Interior.ColorIndex =
2
End
If: End
If

End Sub
-------------------------

Cảm ơn nhiều.
 
Web KT
Back
Top Bottom