[Làm ơn] Tô mầu theo điều kiện, Ktra tiết trống (2 người xem)

  • Thread starter Thread starter aviaiva
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

aviaiva

Thành viên thường trực
Tham gia
17/8/08
Bài viết
316
Được thích
242
Tô mầu theo điều kiện, Ktra tiết trống

Em có một file excel TKB học sinh (đính kèm)
Nhờ các bác viết hộ code VBA tô mầu theo điều kiện sau

Trong một buổi dậy:
- Nếu xuất hiện tiết trống giữa 2 tiết thì tô mầu
- Nếu xuất hiện 3 tiết giống nhau thì tô mầu

Ảnh đính kèm
62d6324bd8c3cfabe090ae45a3d8a1a2_48246682.20120818110632.700x0.png


Em xin chân thành cảm ơn!
 

File đính kèm

Lần chỉnh sửa cuối:
Em có một file excel TKB học sinh (đính kèm)
Nhờ các bác viết hộ code VBA tô mầu theo điều kiện sau

Trong một buổi dậy:
- Nếu xuất hiện tiết trống giữa 2 tiết thì tô mầu
- Nếu xuất hiện 3 tiết giống nhau thì tô mầu

Ảnh đính kèm
62d6324bd8c3cfabe090ae45a3d8a1a2_48246682.20120818110632.700x0.png


Em xin chân thành cảm ơn!
1)- Tiêu đề này hình như ..........phạm quy hay sao í ( Làm ơn bỏ chữ....."Làm ơn" trong tiêu đề đi bạn)
2)- Nếu trống 2 tiết liền có ....tô luôn hông, làm theo yêu cầu là tô một cell trống thôi nhé ( muốn tô 2 cell thì....tự sửa cho quen thôi)
 

File đính kèm

1)- Tiêu đề này hình như ..........phạm quy hay sao í ( Làm ơn bỏ chữ....."Làm ơn" trong tiêu đề đi bạn)
2)- Nếu trống 2 tiết liền có ....tô luôn hông, làm theo yêu cầu là tô một cell trống thôi nhé ( muốn tô 2 cell thì....tự sửa cho quen thôi)

cảm ơn bác!

Đầu óc em hạn chế nên quên mất trường hợp 2 tiết, 3 tiết trống liên tiếp cũng phải tô, nhưng em sẽ học hỏi từ code của bác rồi chế biến cho đầu óc nó có thêm vài nếp nhăn.

Hi! tiêu đề của em có nội dung rất rõ ràng nên không phạm quy.

em định viết please nhưng người việt dùng hàng việt
 
Lần chỉnh sửa cuối:
cảm ơn bác!

Đầu óc em hạn chế nên quên mất trường hợp 2 tiết, 3 tiết trống liên tiếp cũng phải tô, nhưng em sẽ học hỏi từ code của bác rồi chế biến cho đầu óc nó có thêm vài nếp nhăn.

Hi! tiêu đề của em có nội dung rất rõ ràng nên không phạm quy.

em định viết please nhưng người việt dùng hàng việt

Xem code đơn giản này cho vui, nếu dữ liệu mà có nhiều hơn chắc mình phải dùng mệnh đề If mỏi tay luôn.
Suy nghĩ cách để dùng vòng lặp cho mấy cái if này mà chưa nghĩ ra

PHP:
Sub to_mau_tiep()
Application.ScreenUpdating = False
Dim dl, x, i, j
Set dl = [c4:m33]
dl.Interior.ColorIndex = xlNone
For cot = 1 To dl.Columns.Count
x = 1
   For dong = 1 To dl.Rows.Count
      If dl(dong, cot) = "" Then dl(dong, cot).Interior.ColorIndex = 6
         If Application.CountIf(Range(dl(x, cot), dl(x + 4, cot)), dl(dong, cot)) > 2 Then
            dl(dong, cot).Interior.ColorIndex = 8
               End If
      If dong = 5 Then x = 6
         If dong = 10 Then x = 11
            If dong = 15 Then x = 16
               If dong = 20 Then x = 21
                  If dong = 25 Then x = 26
   Next
Next
Application.ScreenUpdating = True
End Sub
 
Lần chỉnh sửa cuối:
Xem code đơn giản này cho vui, nếu dữ liệu mà có nhiều hơn chắc mình phải dùng mệnh đề If mỏi tay luôn.
Suy nghĩ cách để dùng vòng lặp cho mấy cái if này mà chưa nghĩ ra

PHP:
Sub to_mau_tiep()
Application.ScreenUpdating = False
Dim dl, x, i, j
Set dl = [c4:m33]
dl.Interior.ColorIndex = xlNone
For cot = 1 To dl.Columns.Count
x = 1
   For dong = 1 To dl.Rows.Count
      If dl(dong, cot) = "" Then dl(dong, cot).Interior.ColorIndex = 6
         If Application.CountIf(Range(dl(x, cot), dl(x + 4, cot)), dl(dong, cot)) > 2 Then
            dl(dong, cot).Interior.ColorIndex = 8
               End If
      If dong = 5 Then x = 6
         If dong = 10 Then x = 11
            If dong = 15 Then x = 16
               If dong = 20 Then x = 21
                  If dong = 25 Then x = 26
   Next
Next
Application.ScreenUpdating = True
End Sub

code của bác khi chạy thì cứ tiết trống là nó tô mầu dù tiết đó ở bất kỳ đầu
 
Lần chỉnh sửa cuối:
code của bác khi chạy thì cứ tiết trống là nó tô mầu dù tiết đó ở bất kỳ đầu
Muốn vậy thì thêm 1 dk vào nữa là xong rồi, tại ý tác giả mình không rõ đấy mà
Chỉ cần xác định dòng chia hết cho 5 thi không tô màu. Bạn sửa lại thử xem.

Đây là cách mình xác định ô trống tại tiết 5

PHP:
            If dong Mod 5 <> 0 Then
               dl(dong, cot).Interior.ColorIndex = 6
            End If
 
Lần chỉnh sửa cuối:
Bạn thử dùng hàm Switch xem.

Chưa thấy ai dùng lần nào nên chưa hình dung ra phương thức bạn gợi ý. Bạn có ví dụ nào không? Có xem sơ qua trong HELP nhưng chưa hiểu cách sử dụng. Nhưng có lẽ nếu dữ liệu lớn thì chắc cũng không hợp lý.
 
Lần chỉnh sửa cuối:
Muốn vậy thì thêm 1 dk vào nữa là xong rồi, tại ý tác giả mình không rõ đấy mà
Chỉ cần xác định dòng chia hết cho 5 thi không tô màu. Bạn sửa lại thử xem.
Đây là cách mình xác định ô trống tại tiết 5
PHP:
            If dong Mod 5 <> 0 Then
               dl(dong, cot).Interior.ColorIndex = 6
            End If
Nếu học sinh chỉ học 3 tiết đầu, thì tiết 4 cũng không cần tô. Theo mình hiểu, cần tô những tiết học do sơ suất trong việc chia TKB mà thôi.
Chưa thấy ai dùng lần nào nên chưa hình dung ra phương thức bạn gợi ý. Bạn có ví dụ nào không? Có xem sơ qua trong HELP nhưng chưa hiểu cách sử dụng. Nhưng có lẽ nếu dữ liệu lớn thì chắc cũng không hợp lý
Mình chưa dùng Switch với dữ liệu lớn nên không rõ. Để gán giá trị cho x, bạn thử dùng đoạn này:
Mã:
x = Switch(dong >= 25, 26, dong >= 20, 21, dong >= 15, 16, dong >= 10, 11, dong >= 5, 6, dong < 5, 1)
 
Lần chỉnh sửa cuối:
Nếu học sinh chỉ học 3 tiết đầu, thì tiết 4 cũng không cần tô. Theo mình hiểu, cần tô những tiết học do sơ suất trong việc chia TKB mà thôi.
Thật ra do không hiểu hết ý của tác giả nên cũng không biết tô thế nào là đúng yêu cầu. Nhưng đã viết ra cái khung code rồi thì điều chỉnh cũng tương đối đơn giản. Viết nhiều lần cho nhớ lâu tí.

Nếu đúng như bạn nghĩ thì chỉnh lại theo hướng xem coi phía dưới có trống hay không chắc là ok. Nhưng thôi cứ để cho tác giả quyết định
 
Lần chỉnh sửa cuối:
Mình cảm thấy bài này có thể dùng Conditional Formating để làm được đấy
Ai thử thí nghiệm xem!
 
Web KT

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

Back
Top Bottom