Định Dạng CF1

Liên hệ QC

ledinhtham

Thành viên mới
Tham gia
26/11/08
Bài viết
19
Được thích
4
Chào các bạn!
Mình gởi file excel đã có lời giải, các bạn xem và cho thêm nhiều lời giải khác để vấn đề định dạng có điều kiện (CF) thật sự là một ứng dụng tuyệt vời. Mỗi lời giải mong các bạn đặt ở một Sheet riêng.
 

File đính kèm

Ok! Mình đã xem xong rồi. Hôm trước có gởi bài cho ttphong2007 ở mục các câu đố. Trong đó mình chưa làm được chổ nhận dạng cell ở chế độ Unlock . Đọc xong thi mình giải quyết được rồi.
Giải quyết một vấn đề có nhiều cách, các bạn thử down về và làm thêm xem sao, pop lên để bà con học hỏi.
Thân chào!
 
Ok! Mình đã xem xong rồi. Hôm trước có gởi bài cho ttphong2007 ở mục các câu đố. Trong đó mình chưa làm được chổ nhận dạng cell ở chế độ Unlock . Đọc xong thi mình giải quyết được rồi.
Giải quyết một vấn đề có nhiều cách, các bạn thử down về và làm thêm xem sao, pop lên để bà con học hỏi.
Thân chào!
Nói về CF thì trên GPE thiếu gì bài liên quan! Mời bạn tham khảo thử 1 vài món:
http://www.giaiphapexcel.com/forum/showpost.php?p=132477&postcount=19
http://www.giaiphapexcel.com/forum/showthread.php?t=3935
http://www.giaiphapexcel.com/forum/showthread.php?t=4531
http://www.giaiphapexcel.com/forum/showthread.php?t=7899
 
Chào các bạn!
Mình gởi file excel đã có lời giải, các bạn xem và cho thêm nhiều lời giải khác để vấn đề định dạng có điều kiện (CF) thật sự là một ứng dụng tuyệt vời. Mỗi lời giải mong các bạn đặt ở một Sheet riêng.

Góp ý về file CF1 của bạn:
1. Sheet[VD2.2] chỉ cần đặt điều kiện CF là
PHP:
=$J3>=8
là đủ. Nên cho dấu "$" đứng trước chữ J để cố định cột điều kiện J.

2. Sheet[VD2.3], điều kiện cần tổng quát hơn khi số dòng dữ liệu tăng lên, công thức của bạn khi số dòng tăng lên, bạn phải vào sửa lại công thức rất mất công, hãy sửa lại công thức như sau:
PHP:
=$J3=MAX(OFFSET($J$3,,,COUNTA($J:$J),1))

3. Tương tự sheet[VD2.4], công thức cần sửa lại để khi có thêm dòng, ta chỉ cần copy format ô trên xuống dưới là xong, khỏi phải sửa công thức:
PHP:
=COUNTIF($B$3:$B11,$B3)>1
 
Góp ý về file CF1 của bạn:

3. Tương tự sheet[VD2.4], công thức cần sửa lại để khi có thêm dòng, ta chỉ cần copy format ô trên xuống dưới là xong, khỏi phải sửa công thức:
PHP:
=COUNTIF($B$3:$B11,$B3)>1
- Nếu dùng địa chi $B$3:$B11 thì khi thêm giá trị ở ô B13,B14, B15 trùng với giá trị ở ô B3 thì ô B3 không có đổi định dạng mà các ô B13, B14, B15 đổi định dạng. Vì giá trị B3 chỉ áp dụng trong vùng ô B3:B11 chứ không áp dụng B3:B15 nhưng B15 thì áp dụng vùng ô B3:B15 thập chí còn rộng hơn nữa. Mặc dù đã áp dụng copy định dạng.
- Vấn đề là khi thêm một giá trị tiếp theo ở hàng tiếp theo thì giá tri B3 sẽ nới rộng vùng so sánh. Ví dụ thêm giá trị ở ô B14 thì công thứ trên tự chuyển đổi
=COUNTIF($B$3:$B14,$B3) (chưa thay đổi được). Nếu đặt con trỏ ở ô B14 thì chúng ta thấy =COUNTIF($B$3:$B22,$B14)>1.
Mong có ý kiên đóng góp chỗ này. Chân thành cảm ơn!
 
- Nếu dùng địa chi $B$3:$B11 thì khi thêm giá trị ở ô B13,B14, B15 trùng với giá trị ở ô B3 thì ô B3 không có đổi định dạng mà các ô B13, B14, B15 đổi định dạng. Vì giá trị B3 chỉ áp dụng trong vùng ô B3:B11 chứ không áp dụng B3:B15 nhưng B15 thì áp dụng vùng ô B3:B15 thập chí còn rộng hơn nữa. Mặc dù đã áp dụng copy định dạng.
- Vấn đề là khi thêm một giá trị tiếp theo ở hàng tiếp theo thì giá tri B3 sẽ nới rộng vùng so sánh. Ví dụ thêm giá trị ở ô B14 thì công thứ trên tự chuyển đổi
=COUNTIF($B$3:$B14,$B3) (chưa thay đổi được). Nếu đặt con trỏ ở ô B14 thì chúng ta thấy =COUNTIF($B$3:$B22,$B14)>1.
Mong có ý kiên đóng góp chỗ này. Chân thành cảm ơn!

Bạn tạo một name động rồi countif name này là được
Name MHS:
Mã:
=OFFSET(VD2.4!$B$1,,,MATCH(REPT("Z",255),VD2.4!$B:$B),)

Công thức trong CF:
Mã:
Countif(MHS,B3)>1
 

File đính kèm

Bạn tạo một name động rồi countif name này là được
Name MHS:
Mã:
=OFFSET(VD2.4!$B$1,,,MATCH(REPT("Z",255),VD2.4!$B:$B),)

Công thức trong CF:
Mã:
Countif(MHS,B3)>1
Ok!
Cám ơn bạn nhiều!
Công thức của bạn hơi dài, mình cải tiến lại bạn cho ý kiến nha!
=COUNTIF(OFFSET($B$3,,,COUNTA($B:$B),1),$B3)>1
Hàm COUNTA($B:$B) trả về số ô trong CỘT B có giá trị <> NULL. Chúng ta sử dụng trong hàm OFFSET() sẽ cho số dòng của vùng, khi nhập giá trị vào ở bất kỳ trong cột B sẽ làm vùng này tăng lên (Vùng động).
 
Ok!
Cám ơn bạn nhiều!
Công thức của bạn hơi dài, mình cải tiến lại bạn cho ý kiến nha!
=COUNTIF(OFFSET($B$3,,,COUNTA($B:$B),1),$B3)>1
Hàm COUNTA($B:$B) trả về số ô trong CỘT B có giá trị <> NULL. Chúng ta sử dụng trong hàm OFFSET() sẽ cho số dòng của vùng, khi nhập giá trị vào ở bất kỳ trong cột B sẽ làm vùng này tăng lên (Vùng động).
Mình dùng match ... là để tránh trường hợp trong cột MHS có ô trống, Nếu có thì hàm counta sẽ không đúng nữa.
 
Bạn có thể giải thích các tham số trong hàm Offest mà bạn áp dụng cho bà con đi
 
Lần chỉnh sửa cuối:
Bạn tạo một name động rồi countif name này là được
Name MHS:
Mã:
=OFFSET(VD2.4!$B$1,,,MATCH(REPT("Z",255),VD2.4!$B:$B),)

Công thức trong CF:
Mã:
Countif(MHS,B3)>1
- Mã số học sinh thì không thể bỏ trống được, dùng Counta() cũng OK, =COUNTIF(OFFSET($B$3,,,COUNTA($B:$B),1),$B3)>1 nhưng còn dài dòng. Chúng ta có thể dùng công thức như thế này: = COUNTIF($B:$B,$B3)>1 cũng cho kết quả đúng. Mời các bạn cho ý kiến thảo luận chỗ này!
Chân thành cám ơn!
 
Web KT

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

Back
Top Bottom