Tô màu khi giá trị trong cell tăng?

Liên hệ QC

minhquand

Thành viên mới
Tham gia
3/5/12
Bài viết
20
Được thích
0
Nhờ A C E xem giúp mình trong file đính kèm.
Thanks.
 

File đính kèm

  • UYI.xls
    19.5 KB · Đọc: 9
Giá trị đầu là giá trị nào vậy
Ba cột E,F,G có sẵn G=E*F."nếu ta thay đổi giá trị cột E hoặc F thì giá trị bên cột G sẽ thay đổi so với giá trị trước đó,giá trị trước khi thay đổi là giá trị đầu",giá trị thay đổi nếu tăng thì tô màu,bằng hoặc nhỏ hơn thì không tô màu bạn ah.Thanks.
 
Lần chỉnh sửa cuối:
Ba cột E,F,G có sẵn G=E*F. Giá trị mặc định cột G là giá trị đầu nếu ta thay đổi giá trị cột E hoặc F thì giá trị bên cột G sẽ thay đổi,giá trị thay đổi nếu tăng thì tô màu,bằng hoặc nhỏ hơn thì không tô màu bạn ah.Thanks.
Nói không hiểu gì hết
Ví dụ
1. G=E*F(15=5*3) Ta cho là giá trị đầu
2 G=E*F(18=6*3) ta cho giá trị sau
nếu giá trị sau lớn hơn(18>15)thì tô màu đúng không?
 
Nói không hiểu gì hết
Ví dụ
1. G=E*F(15=5*3) Ta cho là giá trị đầu
2 G=E*F(18=6*3) ta cho giá trị sau
nếu giá trị sau lớn hơn(18>15)thì tô màu đúng không?
Đúng đấy bạn.tiếp nữa G=E*F(21=7*3),lúc này 18 sẽ là giá trị đầu.Cảm ơn bạn đã quan tâm giúp đỡ.
 
Đúng đấy bạn.tiếp nữa G=E*F(21=7*3),lúc này 18 sẽ là giá trị đầu.Cảm ơn bạn đã quan tâm giúp đỡ.

Như vậy ai nhớ cho bạn cái 18 kia là đầu,khi đó bạn đổi thành 7*3 rồi
Có như nầy thì được 18 kia vẫn giữ nguyên trong các cột đó ta làm thêm 3 cột khác
Còn nói như bạn thì mình xin thua
 
Như vậy ai nhớ cho bạn cái 18 kia là đầu,khi đó bạn đổi thành 7*3 rồi
Có như nầy thì được 18 kia vẫn giữ nguyên trong các cột đó ta làm thêm 3 cột khác
Còn nói như bạn thì mình xin thua
Không được thì cũng cảm ơn sự quan tâm của bạn.
 
Về nguyên tắc, có thể sử dụng sự kiện: Worksheet_SelectionChange để lưu lại giá trị của ô tại cột G trước khi bị thay đổi
sau đó dùng sự kiện Worksheet_Change để kiểm tra sự thay đổi và quyết định tô màu hay không.
Việc dùng 2 sự kiện này sẽ làm cho bảng tính trở nên nặng nề.
 
Về nguyên tắc, có thể sử dụng sự kiện: Worksheet_SelectionChange để lưu lại giá trị của ô tại cột G trước khi bị thay đổi
sau đó dùng sự kiện Worksheet_Change để kiểm tra sự thay đổi và quyết định tô màu hay không.
Việc dùng 2 sự kiện này sẽ làm cho bảng tính trở nên nặng nề.

Cái nguyên tắc này thì đúng rồi. Vậy bạn có giải pháp nào tốt hơn không ? Nếu có thì post lên cho anh em học hỏi thêm nhé.
 
Trong file đính kèm, tôi sử dụng 2 sự kiện như nói ở trên trong sheet1 như sau:
PHP:
Public v
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range
If Not Intersect(Target, Me.[E8:F28]) Is Nothing Then
    Set r = Target.Offset(0, 7 - Target.Column)
    If v < r.Value Then r.Interior.ColorIndex = 35 Else r.Interior.ColorIndex = 0
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Me.[E8:F28]) Is Nothing Then
    v = Target.Offset(0, 7 - Target.Column)
End If
End Sub

Xem file đính kèm.

Thân
 

File đính kèm

  • UYI.xls
    37.5 KB · Đọc: 12
Lần chỉnh sửa cuối:
Trong file đính kèm, tôi sử dụng 2 sự kiện như nói ở trên trong sheet1 như sau:
PHP:
Public vPrivate Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range
If Not Intersect(Target, Me.[E8:F28]) Is Nothing Then
    Set r = Target.Offset(0, 7 - Target.Column)
    If v < r.Value Then r.Interior.ColorIndex = 35 Else r.Interior.ColorIndex = 0
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Me.[E8:F28]) Is Nothing Then
    v = Target.Offset(0, 7 - Target.Column)
End If
End Sub

Xem file đính kèm.

Thân
Cảm ơn bạn,cái này đáp ứng đầy đủ cái mình cần,nhưng cho mình hỏi giờ nếu đổi lại cột F=E*G thì sửa code làm sao?
 
Dựa theo các thủ tục trên, bạn có thể thay đổi tùy theo dữ liệu thật của bạn. Chẳng hạn khi thay công thức F=E*G thì các câu lệnh kiểm tra cũng phải thay đổi theo:

PHP:
Public v
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range
If Not Intersect(Target, Union(Me.[E8:E28], Me.[G8:G28])) Is Nothing Then
    If Target.Column = 5 Then Set r = Target.Offset(0, 1) Else Set r = Target.Offset(0, -1)
    If v < r.Value Then r.Interior.ColorIndex = 35 Else r.Interior.ColorIndex = 0
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Union(Me.[E8:E28], Me.[G8:G28])) Is Nothing Then
    If Target.Column = 5 Then v = Target.Offset(0, 1) Else v = Target.Offset(0, -1)
End If
End Sub
 
Web KT

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

Back
Top Bottom