PDA

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



connhangheo
22-10-07, 05:03 PM
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

anhtuan1066
22-10-07, 05:15 PM
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:

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

SA_DQ
22-10-07, 05:21 PM
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ụ

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.HasFormula Then
Target.Interior.ColorIndex = 38 'Bạn có thể chọn các số từ 34-40
End If
End Sub

connhangheo
22-10-07, 05:45 PM
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ụ

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.HasFormula Then
Target.Interior.ColorIndex = 38 'Bạn có thể chọn các số từ 34-40
End If
End Sub
sao em ko thấy hiệu quả gì thế nhỉ, các ô chứa công thức vẫn thế

Mr Okebab
22-10-07, 05:58 PM
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!

anhtuan1066
22-10-07, 08:46 PM
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

SA_DQ
22-10-07, 09:15 PM
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!

--=--

connhangheo
22-10-07, 09:50 PM
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é.

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

anhtuan1066
22-10-07, 09:58 PM
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

Mr Okebab
22-10-07, 10:14 PM
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!

anhtuan1066
22-10-07, 10:17 PM
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....

connhangheo
22-10-07, 11:05 PM
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.

SA_DQ
23-10-07, 06:30 AM
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?

Option Explicit
Sub GoTo1()

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

End Sub

(húc bạn thành công, nhất là Goto!!

chidunglk
16-06-08, 09:31 PM
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 đỡ

ndu96081631
16-06-08, 09:43 PM
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 đỡ
Xem tại đây:
http://www.giaiphapexcel.com/forum/showthread.php?t=7671
Thậm chí không cần đến code nào vẩn làm được (chịu khó bấm F9 nếu không dùng code)

yellowbird
16-06-08, 10:54 PM
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

SA_DQ
17-06-08, 12:19 AM
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:


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.

yellowbird
17-06-08, 11:08 AM
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:


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.

HYen17
17-06-08, 11:26 AM
Câu 1:


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.

yellowbird
17-06-08, 11:06 PM
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.

HYen17
18-06-08, 08:15 AM
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
Nếu chỉ thuần macro thì sẽ như vầy:


Private Sub Worksheet_Change(ByVal Target As Range)
Dim bColorIndex As Byte
If Not Intersect(Target, Range("F1:F999")) Is Nothing Then
If Target.Value > 136 Then
bColorIndex = 3
ElseIf Target.Value > 119 Then
bColorIndex = 46
ElseIf Target.Value > 100 Then
bColorIndex = 6
ElseIf Target.Value > 85 Then
bColorIndex = 5
Else
bColorIndex = 2
End If
Target.Interior.ColorIndex= bColorIndex: End If
End Sub

soiconkthn
01-09-08, 03:23 PM
1.tạo name tên là hungba có refer to là : get.cell(48,a1)
2. chọn toàn bảng tính
3. cf> formulais =hungba
4. định dang như mình mong muốn
ok

xda1811
19-02-09, 04:01 PM
em cần tô màu như trong file image. rất mong các cao thủ chỉ dạy
( tính theo cột cứ ô nào có * thì là màu tím )
cảm ơn các anh
http://www.giaiphapexcel.com/forum/attachment.php?attachmentid=22532&stc=1&d=1235034169

Po_Pikachu (http://www.giaiphapexcel.com/forum/member.php?u=52279) cho em xin YM với. em không up đc file lên đây

Po_Pikachu
19-02-09, 04:04 PM
Bạn ơi! Hình trông chẳng thú vị gì hết.
Thôi bạn gửi cái file Excel đó lên thì hơn.
Thân.

cadafi
19-02-09, 04:09 PM
em cần tô màu như trong file image. rất mong các cao thủ chỉ dạy
( tính theo cột cứ ô nào có * thì là màu tím )

Chiếu sáng vùng cần thao tác, rồi vào Format/Conditional Formatting...
Gõ công thức như trong hình rồi format tùy ý!

http://www.giaiphapexcel.com/forum/attachment.php?attachmentid=22533&stc=1&d=1235035389

xda1811
19-02-09, 04:17 PM
anh ca_dafi ơi. em hỏ thêm 1 chút ( em muốn thêm điều kiện là liên kề nhau 8 ô, 9 ô...20 ô liên kề mới là màu tím ) nếu nó nhỏ hơn số điêuf kiêm trên thì là màu khác thì em phải làm thế nào
cảm ơn anh nhiều

Po_Pikachu
19-02-09, 04:21 PM
File của bạn ấy gửi đây.
Thân.