Ngày mai trời lại sáng
Thành viên thường trực




- Tham gia
- 4/7/21
- Bài viết
- 339
- Được thích
- 139
Cần tô tay tất cả các ô thỏa điều kiệnem muốn tô màu các giá trị gần nhất và lớn hơn giá trị cuối cùng nhờ mọi người giúp đỡ em.
Bác ơi,vì F6 gần G6 và F6> G6 cứ gần G6 nhất mà lớn hơn sẽ tô,nếu ô gần nhất mà có khoảng trống sẽ tìm đến ô kế tiếp nếu ô này lớn hơn thì tô.. nhỏ hơn hoặc bằng thì thôi không tìm nữa.Cần tô tay tất cả các ô thỏa điều kiện
Dòng 6: D6>F6 tại sao tô F6 ?
Câu này "các tiếp" nghĩa là sao bạn nhỉ?sẽ so với các tiếp
1) Tô theo hàng? (tô theo Item)em muốn tô màu các giá trị gần nhất và lớn hơn giá trị cuối cùng nhờ mọi người giúp đỡ em.
Ô sếp, lại là sếp.. cảm ơn sếp, vâng tô theo hàng theo từng item riêng lẻ (không item nào liên quan với item nào).1) Tô theo hàng? (tô theo Item)
2) Cứ mỗi ngày đánh số 1 lần? Và như thế có kết quả mới, thì kết quả cũ tức ô đã tô trước đó mất màu?
3) Ô ngày mới VD bằng 10, các ô trước lần lượt là 9, 10, 11, 12 thì ô nào được chọn để tô màu?
Bạn trả lời lần lượt cho tôi may ra giúp bạn được.
Bạn gọi tôi là Sếp thì tôi chả thích cũng chả dị ứng, bởi chỉ có những người chưa từng làm sếp mới ngại, chứ tôi nghe quen từ nhân viên của tôi rồi nên thấy nó bình thường. Nhưng tốt nhất đừng gọi như vậy nữa, gọi anh là được rồi.Ô sếp, lại là sếp.. cảm ơn sếp, vâng tô theo hàng theo từng item riêng lẻ (không item nào liên quan với item nào).
Cứ mỗi ngày đánh kết quả 1 lần chỉ 1 lần rồi thôi, không quay lại.
khi có kết quả mới thì phải kiểm tra kết quả mới này với kết quả cũ liền kề (gần nhất) sau kết quả mới nhất xem kết quả này có lớn hơn kết quả mới không nếu kết quả cũ lớn hơn kết quả mới thì tô kết quả cũ.
Ô ngày mới VD bằng 10, các ô trước lần lượt là 9, 10, 11, 12 thì ô nào được chọn để tô màu?--số 9 sẽ là được chọn nhưng số 9 không đạt tiêu chuẩn để màu vì 9 < 10
Nếu các ô trước lần lượt là 11, 10, 11, 12 thì 11 sẽ được tô màu nền vàng,
Nếu các ô trước lần lượt là ,ôTrống,ôTrống,11, 10, 11, 12 thì số 11 (màu đỏ ) sẽ được lựa chọn để kiểm tra và 11 lớn hơn thì tô màu nền vàng
Nếu các ô trước lần lượt là ,ôTrống,ôTrống,10, 10, 11, 12 thì số 10 (màu đỏ ) sẽ được lựa chọn để kiểm tra nhưng 10 không đạt nên không được tô màu
Ồ vậy là sếp chuẩn đét rồi thôi em không để tâm chuyện ai ngại, để tâm đau đầu lắm sếp ơi. Dù tốt mấy đi nữa sống sao được cho vừa lòng được tập đâu sếp em gọi thế nào mà sếp cảm thấy không bị thiếu tôn trọng với em thế là đủ.Bạn gọi tôi là Sếp thì tôi chả thích cũng chả dị ứng, bởi chỉ có những người chưa từng làm sếp mới ngại, chứ tôi nghe quen từ nhân viên của tôi rồi nên thấy nó bình thường. Nhưng tốt nhất đừng gọi như vậy nữa, gọi anh là được rồi.
Nếu không xóa màu ô cũ thì nó vàng cả hàng luôn thì sao?
Lấy một hàng làm ví dụ đi, bắt đầu là ngày:Ồ vậy là sếp chuẩn đét rồi thôi em không để tâm chuyện ai ngại, để tâm đau đầu lắm sếp ơi. Dù tốt mấy đi nữa sống sao được cho vừa lòng được tập đâu sếp em gọi thế nào mà sếp cảm thấy không bị thiếu tôn trọng với em thế là đủ.
Vâng thì thôi em nghe sếp anh luôn vậy, cũng khổ thật. Xưng hô bề trên cũng đau đầu phải chọn từ ngữ.
Nếu không xóa màu thì màu nó mặc định là màu cũ mà sếp như kiểu tô màu của conditionformatting ấy sếp. à Anhhhhh!
À hay anh định dùng vba à, thế thì thì phải xóa màu rồi anh.![]()
Em sẽ tạo thêm ngày 1 ô B1: ô này sẽ điền ngày nhập liệu cuối cùng vào đây ví dụ nếu nhập liệu mới đến ngày 1 thì trước đó không có gì so sánh không tô gì cả (màu trắng)Lấy một hàng làm ví dụ đi, bắt đầu là ngày:
- Ngày 1 ghi là 10 tô vàng ở đâu? chính nó? hay không tô?
- Ngày 2 ghi là 11, tô ô ngày 1 hay không tô?
- Ngày 3 ghi là 9, tô ô ngày 1 hay ngày 2? Lúc này 1 trong 2 ngày kia đã có màu, nếu cả 2 ô cùng tô vàng thì sao?
.....
Tôi cho bạn công thức, xem bạn có tùy biến từ công thức được không nhé.Em sẽ tạo thêm ngày 1 ô B1: ô này sẽ điền ngày nhập liệu cuối cùng vào đây ví dụ nếu nhập liệu mới đến ngày 1 thì trước đó không có gì so sánh không tô gì cả (màu trắng)
đến ngày 2 em nhập ngày 2 vào B1 nó sẽ so với ngày 1 xem có giá trị không nếu có giá trị và giá trị của ngày 1 lớn hơn ngày 2 thì tô ngày 1 cong không thì không làm gì cả (màu trắng)
đến ngày 3 em nhập ngày 3 vào B1 nó sẽ so với ngày 2 xem có giá trị không nếu có giá trị của ngày 2 lớn hơn ngày 3thì tô ngày 2 , còn nếu ngày 2 trống thì kiểm tra ngày 1 xem có không nếu xem giá trị lớn hơn ngày 3 không nếu lớn tô màu,còn không thì không làm gì cả (màu trắng)
và cứ như vậy..
Nếu là vba sếp sử dụng hàm tự tạo với 3 biến số truyền vào : Tomau(Ngày mới nhất,Dải ngày,Vùng dữ liệu)
Trong đó ngày mới nhất là ngày nhập các giá trị sau cùng, vì có nhiều ngày, ví dụ: B1
Dải ngày là tất cả các ngày tại hàng 2 từ ngày nhỏ nhất đến ngày lớn nhất trong hàng 2 , ví dụ: C2:J2
Vùng dữ liệu C3:J22
em đưa hàm này vào Condtionformating kiểm tra TRUE là tô màu
Thôi anh cứ làm theo cách của anh , biết đâu lại hay hơn cái em cần. còn bài này em thấy nếu dùng công thức là thuận tiện.
Tôi không biết cách nào để dùng CF trong trường hợp này, thôi thì dùng VBA và bấm nút vậy.Nếu không xóa màu thì màu nó mặc định là màu cũ mà sếp như kiểu tô màu của conditionformatting ấy sếp. à Anhhhhh!
À hay anh định dùng vba à, thế thì thì phải xóa màu rồi anh.![]()
Sub ToMau()
Dim k As Double
Dim shtData As Worksheet
Dim c As Long, e As Long, r As Long
Dim rng As Range, rngData As Range, rngFind As Range, rngCompare As Range
Set shtData = Worksheets("Sheet1")
e = shtData.Range("B" & shtData.Rows.Count).End(xlUp).Row
Set rngData = shtData.Range("C3:J" & e)
rngData.Interior.Pattern = xlNone
e = e - 2
For r = 1 To e
c = shtData.Range("K3")(r).End(xlToLeft).Column
If c > 3 Then
Set rngCompare = rngData(r, c - 2)
Set rngFind = shtData.Range(rngData(r, 1), rngData(r, c - 3))
k = FindClosestNumber(rngFind, rngCompare.Value)
If k > 0 Then
For Each rng In rngFind
If Val(rng.Value) = k Then
rng.Interior.Color = 65535
Exit For
End If
Next
End If
End If
Next
End Sub
c = shtData.Range("K3")(r).End(xlToLeft).Column
Bạn viết lớn hơn nhưng trong tập tin đính kèm bạn lại tô mầu C19 nên tôi cho là LỚN HƠN HOẶC BẰNG. Đã phát biểu thì phải phát biểu thật chính xác.em muốn tô màu các giá trị gần nhất và lớn hơn giá trị cuối cùng nhờ mọi người giúp đỡ em.
=LOOKUP(2,1/($C3:INDEX($C3:$Z3,,LOOKUP(10^15,$C3:$Z3,COLUMN($C3:$Z3))-3)>=LOOKUP(10^15,$C3:$Z3)),COLUMN($C3:$Z3))=COLUMN(C3)
=hichic
Tôi không biết cách nào để dùng CF trong trường hợp này, thôi thì dùng VBA và bấm nút vậy.
Sau khi bấm nút KIỂM TRA và nó so sánh với ô cuối cùng có số liệu trong một hàng thì kết quả như hình:
View attachment 266803
Và đây là thủ tục của nó:
Mã:Sub ToMau() Dim k As Double Dim shtData As Worksheet Dim c As Long, e As Long, r As Long Dim rng As Range, rngData As Range, rngFind As Range, rngCompare As Range Set shtData = Worksheets("Sheet1") e = shtData.Range("B" & shtData.Rows.Count).End(xlUp).Row Set rngData = shtData.Range("C3:J" & e) rngData.Interior.Pattern = xlNone e = e - 2 For r = 1 To e c = shtData.Range("K3")(r).End(xlToLeft).Column If c > 3 Then Set rngCompare = rngData(r, c - 2) Set rngFind = shtData.Range(rngData(r, 1), rngData(r, c - 3)) k = FindClosestNumber(rngFind, rngCompare.Value) If k > 0 Then For Each rng In rngFind If Val(rng.Value) = k Then rng.Interior.Color = 65535 Exit For End If Next End If End If Next End Sub
Bạn kiểm tra đi xem đã đúng chưa nhé.
P/s: Bạn lưu ý với câu này:
Áp dụng thực tế bạn có thể thay đổi K3 là một ô khác. K3 là ô sát với ô cuối cùng của hàng đầu tiên, khi áp dụng thực tế bạn cũng nên thay thế kiểu như vậy.Mã:c = shtData.Range("K3")(r).End(xlToLeft).Column
Cảm ơn chú BATMAN,cảm ơn anh NGHĨA. Cháu đọc hai bài này xong cảm giác đúng là rất hichicBạn viết lớn hơn nhưng trong tập tin đính kèm bạn lại tô mầu C19 nên tôi cho là LỚN HƠN HOẶC BẰNG. Đã phát biểu thì phải phát biểu thật chính xác.
Tôi thử phát biểu lại yêu cầu. Nếu đúng ý thì đọc tiếp, nếu ý khác thì dừng tại đây.
Yêu cầu: Trong mỗi dòng ta xét các ô trước ô cuối cùng có dữ liệu. Nếu trong các ô đang xét có ít nhất 1 ô có giá trị LỚN HƠN HOẶC BẰNG giá trị của ô cuối thì ta tô mầu ô ở cột gần cột của ô cuối cùng nhất, các ô khác không tô mầu. Trong trường hợp ngược lại không có ô nào được tô mầu.
Nói cách khác ta bắt đầu từ ô ở cột ngay trước ô cuối cùng và đi về bên trái. Nếu gặp ô có giá trị LỚN HƠN HOẶC BẰNG giá trị của ô cuối thì ta tô mầu ô đó và dừng lại.
Tôi tậu được con bò mộng, rút gọn hay không thì tùy bạn, tôi cũng chả ham.
Hãy làm chính xác các bước sau: Chọn C3 -> đặt Name vd. hichic với Refers to
Mã:=LOOKUP(2,1/($C3:INDEX($C3:$Z3,,LOOKUP(10^15,$C3:$Z3,COLUMN($C3:$Z3))-3)>=LOOKUP(10^15,$C3:$Z3)),COLUMN($C3:$Z3))=COLUMN(C3)
-> chọn vd. C3:Z100 -> thẻ Home -> Conditional Formatting -> New Rule -> "Use a formula ..." -> nhập công thức
Mã:=hichic
-> nhấn Format -> chọn mầu.
Bạn viết lớn hơn nhưng trong tập tin đính kèm bạn lại tô mầu C19 nên tôi cho là LỚN HƠN HOẶC BẰNG. Đã phát biểu thì phải phát biểu thật chính xác.
Tôi thử phát biểu lại yêu cầu. Nếu đúng ý thì đọc tiếp, nếu ý khác thì dừng tại đây.
Yêu cầu: Trong mỗi dòng ta xét các ô trước ô cuối cùng có dữ liệu. Nếu trong các ô đang xét có ít nhất 1 ô có giá trị LỚN HƠN HOẶC BẰNG giá trị của ô cuối thì ta tô mầu ô ở cột gần cột của ô cuối cùng nhất, các ô khác không tô mầu. Trong trường hợp ngược lại không có ô nào được tô mầu.
Nói cách khác ta bắt đầu từ ô ở cột ngay trước ô cuối cùng và đi về bên trái. Nếu gặp ô có giá trị LỚN HƠN HOẶC BẰNG giá trị của ô cuối thì ta tô mầu ô đó và dừng lại.
Tôi tậu được con bò mộng, rút gọn hay không thì tùy bạn, tôi cũng chả ham.
Hãy làm chính xác các bước sau: Chọn C3 -> đặt Name vd. hichic với Refers to
Mã:=LOOKUP(2,1/($C3:INDEX($C3:$Z3,,LOOKUP(10^15,$C3:$Z3,COLUMN($C3:$Z3))-3)>=LOOKUP(10^15,$C3:$Z3)),COLUMN($C3:$Z3))=COLUMN(C3)
-> chọn vd. C3:Z100 -> thẻ Home -> Conditional Formatting -> New Rule -> "Use a formula ..." -> nhập công thức
Mã:=hichic
-> nhấn Format -> chọn mầu.
Ặc công thức gì mà móc miếc loằng ngoằng khủng khiếp vậy sếp?Tôi cho bạn công thức, xem bạn có tùy biến từ công thức được không nhé.
Tôi không biết cách nào để dùng CF trong trường hợp này, thôi thì dùng VBA và bấm nút vậy.
Sau khi bấm nút KIỂM TRA và nó so sánh với ô cuối cùng có số liệu trong một hàng thì kết quả như hình:
View attachment 266803
Và đây là thủ tục của nó:
Mã:Sub ToMau() Dim k As Double Dim shtData As Worksheet Dim c As Long, e As Long, r As Long Dim rng As Range, rngData As Range, rngFind As Range, rngCompare As Range Set shtData = Worksheets("Sheet1") e = shtData.Range("B" & shtData.Rows.Count).End(xlUp).Row Set rngData = shtData.Range("C3:J" & e) rngData.Interior.Pattern = xlNone e = e - 2 For r = 1 To e c = shtData.Range("K3")(r).End(xlToLeft).Column If c > 3 Then Set rngCompare = rngData(r, c - 2) Set rngFind = shtData.Range(rngData(r, 1), rngData(r, c - 3)) k = FindClosestNumber(rngFind, rngCompare.Value) If k > 0 Then For Each rng In rngFind If Val(rng.Value) = k Then rng.Interior.Color = 65535 Exit For End If Next End If End If Next End Sub
Bạn kiểm tra đi xem đã đúng chưa nhé.
P/s: Bạn lưu ý với câu này:
Áp dụng thực tế bạn có thể thay đổi K3 là một ô khác. K3 là ô sát với ô cuối cùng của hàng đầu tiên, khi áp dụng thực tế bạn cũng nên thay thế kiểu như vậy.Mã:c = shtData.Range("K3")(r).End(xlToLeft).Column
Công thức mảng bạn ơi. Bạn gõ công thức như thường, sau đó kết thúc bằng tổ hợp phím Ctrl+Shift+Enter tự nhiên nó sẽ ra 2 dấu ngoặc móc { }.Công thức gì mà móc miếc loằng ngoằng khủng khiếp vậy sếp?
thú vị thật, em copy vào conditionformatting không Ctrl+Shift+Enter được nên em thêm 2 cái móc , nó lại xuất hiện thêm "="{=MIN(IF(C3:F3>G3,C3:F3))}""Công thức mảng bạn ơi. Bạn gõ công thức như thường, sau đó kết thúc bằng tổ hợp phím Ctrl+Shift+Enter tự nhiên nó sẽ ra 2 dấu ngoặc móc { }.
Đúng rồi sếp chỉ là chọn để kiểm tra vì nó có giá trị và nó là gần nhất, sau đó mới xét đến điều kiện nếu lớn thì tô màu cho nó còn không thì item này không có cái nào được tô màu.Bạn ghi là:
em muốn tô màu các giá trị gần nhất và lớn hơn giá trị cuối cùng nhờ mọi người giúp đỡ em.
Nhưng cái hình tại hàng Item10 lẽ ra không có trường hợp nào lớn hơn, nhưng bạn lại chọn 11.334, tôi không biết dựa trên cơ sở nào.
Sai logic trầm trọng.Đúng rồi sếp chỉ là chọn để kiểm tra vì nó có giá trị và nó là gần nhất, sau đó mới xét đến điều kiện nếu lớn thì tô màu cho nó còn không thì item này không có cái nào được tô màu.