Bùi Thúy Thúy
Thành viên thường trực
![](/diendan/data/PhoToDanhHieu/gold.gif)
![](/diendan/data/PhoToDanhHieu/gold.gif)
![](/diendan/data/PhoToDanhHieu/gold.gif)
![](/diendan/data/PhoToDanhHieu/gold.gif)
- Tham gia
- 2/7/18
- Bài viết
- 289
- Được thích
- 38
Bạn cho hỏi ô ghi 1/2/1900 tại sao không phải ngày tháng vậy? tương tự ô 3/20/1900 tại sao không phải ngày tháng? theo excel hiểu 3/20/1900 chính là ngày 20 tháng 3 năm 1900 mà.Trong vùng kẻ khung cho E xin code để kiểm tra vùng từ cột D đến cột I với điều kiện :
Nếu ô nào không có giá trị ngày tháng và không phải là ô trống thì tô màu
(Kết quả: Trên vùng là các ô tô màu sau khi đã kiểm tra)
View attachment 200518
Mong sự giúp đỡ của Anh Chị và các Bạn
Vâng, e để định dạng ngày tháng trong các ô đó, theo E hiểu những ô như 3/20/190 là ô bị lỗi ( E để định dạng ngày tháng, nhưng đó là ô E điền dạng số học như số 30 hay số gì đó mà không phải điền dữ liệu kiểu ngày tháng" 02/03/2016")Bạn cho hỏi ô ghi 1/2/1900 tại sao không phải ngày tháng vậy? tương tự ô 3/20/1900 tại sao không phải ngày tháng? theo excel hiểu 3/20/1900 chính là ngày 20 tháng 3 năm 1900 mà.
Tiện nhất là Bạn dự file demo gần gần với file thực cho dễ. Mà hình như cái này là kiểm tra ngày trong HSQLCL thì phảiVâng, e để định dạng ngày tháng trong các ô đó, theo E hiểu những ô như 3/20/190 là ô bị lỗi ( E để định dạng ngày tháng, nhưng đó là ô E điền dạng số học như số 30 hay số gì đó mà không phải điền dữ liệu kiểu ngày tháng" 02/03/2016")
E hiểu như vậy có đúng không Thầy? mục đích của E là để kiểm tra dữ liệu, những ô nào vô tình điền dữ liệu không đúng kiểu ngày/tháng/năm (điền con số nào đó: số 20 chả hạn) sẽ bị tô màu để phát hiện và sửa lại
E cám ơn Thầy!
Sub BoiMau()
Dim sRng As Range, Rng As Range, Cll As Range
Dim N As Long, Str As String, Str1 As String
Str = "Em da chon duoc ": Str1 = " o. Lam gi nua thi tuy y nha Chi nha"
On Error GoTo Thoat
Set sRng = Application.InputBox(Prompt:="Chon vung du lieu ", Title:="Du lieu dau vao", Type:=8)
sRng.Interior.Pattern = xlNone
For Each Cll In sRng
If IsError(Cll) Then GoTo Tiep
If Cll <> Empty And Not IsDate(Cll) Then GoTo Tiep
If Cll <> Empty Then
If Year(Cll) = 1900 Then
Tiep:
N = N + 1
If Rng Is Nothing Then
Set Rng = Cll
Else
Set Rng = Union(Rng, Cll)
End If
End If
End If
Next
Rng.Select
MsgBox Str & ": " & N & Str1
Thoat:
End Sub
Thế thì bạn xài conditional formatting, tô màu những ô có giá trị< 36000 ( tương đương với ngày 24/7/1998) , vốn dĩ ngày tháng cũng là một con số với số 1tương đương là ngày 1/1/1900, bạn xem cơ sở dữ liệu của bạn cần ngày cũ nhất là bao nhiêu rồi chọn giá trị đó bỏ vào conditional formatting là được, ko cần xài code chiVâng, e để định dạng ngày tháng trong các ô đó, theo E hiểu những ô như 3/20/190 là ô bị lỗi ( E để định dạng ngày tháng, nhưng đó là ô E điền dạng số học như số 30 hay số gì đó mà không phải điền dữ liệu kiểu ngày tháng" 02/03/2016")
E hiểu như vậy có đúng không Thầy? mục đích của E là để kiểm tra dữ liệu, những ô nào vô tình điền dữ liệu không đúng kiểu ngày/tháng/năm (điền con số nào đó: số 20 chả hạn) sẽ bị tô màu để phát hiện và sửa lại
E cám ơn Thầy!
Tiện nhất là Bạn dự file demo gần gần với file thực cho dễ. Mà hình như cái này là kiểm tra ngày trong HSQLCL thì phải
PHP:Sub BoiMau() Dim sRng As Range, Rng As Range, Cll As Range Dim N As Long, Str As String, Str1 As String Str = "Em da chon duoc ": Str1 = " o. Lam gi nua thi tuy y nha Chi nha" On Error GoTo Thoat Set sRng = Application.InputBox(Prompt:="Chon vung du lieu ", Title:="Du lieu dau vao", Type:=8) sRng.Interior.Pattern = xlNone For Each Cll In sRng If IsError(Cll) Then GoTo Tiep If Cll <> Empty And Not IsDate(Cll) Then GoTo Tiep If Cll <> Empty Then If Year(Cll) = 1900 Then Tiep: N = N + 1 If Rng Is Nothing Then Set Rng = Cll Else Set Rng = Union(Rng, Cll) End If End If End If Next Rng.Select MsgBox Str & ": " & N & Str1 Thoat: End Sub
Vâng E cám ơn, có file mà chị E đính kèm ờ bài 1 Chị ạ!Tiện nhất là Bạn dự file demo gần gần với file thực cho dễ. Mà hình như cái này là kiểm tra ngày trong HSQLCL thì phải
PHP:Sub BoiMau() Dim sRng As Range, Rng As Range, Cll As Range Dim N As Long, Str As String, Str1 As String Str = "Em da chon duoc ": Str1 = " o. Lam gi nua thi tuy y nha Chi nha" On Error GoTo Thoat Set sRng = Application.InputBox(Prompt:="Chon vung du lieu ", Title:="Du lieu dau vao", Type:=8) sRng.Interior.Pattern = xlNone For Each Cll In sRng If IsError(Cll) Then GoTo Tiep If Cll <> Empty And Not IsDate(Cll) Then GoTo Tiep If Cll <> Empty Then If Year(Cll) = 1900 Then Tiep: N = N + 1 If Rng Is Nothing Then Set Rng = Cll Else Set Rng = Union(Rng, Cll) End If End If End If Next Rng.Select MsgBox Str & ": " & N & Str1 Thoat: End Sub
E có chạy code Chị ạ, có tô màu như hình e gửi nhưng khi chọn chuột ra ngoài lại mất (hình 1 + hình 2)Với cách này là có thể kiểm tra được dữ liệu cả những dạng khác như định dạng ngày tháng, định dạng date và định dạng text đúng không anh !
Mình nghĩ đưa nó vào hàm xác nhận là được. Đó là nghĩ thôi nha. Còn không biết làm đâuVới cách này là có thể kiểm tra được dữ liệu cả những dạng khác như định dạng ngày tháng, định dạng date và định dạng text đúng không anh !
À mình nói trên là cái file mẫu nó gần giống với file bạn ý làm thực tế để mọi người đỡ phải sửa đi sửa lại. Do vậy mình phải đưa cái InputBox: Thích chọn vùng nào thì chọnVâng E cám ơn, có file mà chị E đính kèm ờ bài 1 Chị ạ!
Bài đã được tự động gộp:
E có chạy code Chị ạ, có tô màu như hình e gửi nhưng khi chọn chuột ra ngoài lại mất (hình 1 + hình 2)View attachment 200554View attachment 200555 ngay Chị ạ!, Chị xem giúp lại E bôi bàu nào đỏ để khi nhấn chuột ra ngoài không bị mất được không ạ!
Úi Thầy ơi. Kiểu nầy Thầy sắp la em cái gì nữa đâyMình thì không biết làm mà cũng không biết nghĩ luôn.
Cái đó mới là chọn ô thôi chứ có tô màu gì đâu: Rng.Select màVâng E cám ơn, có file mà chị E đính kèm ờ bài 1 Chị ạ!
Bài đã được tự động gộp:
E có chạy code Chị ạ, có tô màu như hình e gửi nhưng khi chọn chuột ra ngoài lại mất (hình 1 + hình 2)View attachment 200554View attachment 200555 ngay Chị ạ!, Chị xem giúp lại E bôi bàu nào đỏ để khi nhấn chuột ra ngoài không bị mất được không ạ!
Bạn chưa biết tôi. Tôi rất lấy làm buồn khi có ngừoi gọi mình là cao thủ.Cao thủ rồi thì anh làm đại cũng được ấy mà nên vậy anh ạ
Vâng E cám ơn, có file mà chị E đính kèm ờ bài 1 Chị ạ!
Bài đã được tự động gộp:
E có chạy code Chị ạ, có tô màu như hình e gửi nhưng khi chọn chuột ra ngoài lại mất (hình 1 + hình 2)View attachment 200554View attachment 200555 ngay Chị ạ!, Chị xem giúp lại E bôi bàu nào đỏ để khi nhấn chuột ra ngoài không bị mất được không ạ!
Đây E đưa file lên Chị giúp E ạ!Tiện nhất là Bạn dự file demo gần gần với file thực cho dễ. Mà hình như cái này là kiểm tra ngày trong HSQLCL thì phải
PHP:Sub BoiMau() Dim sRng As Range, Rng As Range, Cll As Range Dim N As Long, Str As String, Str1 As String Str = "Em da chon duoc ": Str1 = " o. Lam gi nua thi tuy y nha Chi nha" On Error GoTo Thoat Set sRng = Application.InputBox(Prompt:="Chon vung du lieu ", Title:="Du lieu dau vao", Type:=8) sRng.Interior.Pattern = xlNone For Each Cll In sRng If IsError(Cll) Then GoTo Tiep If Cll <> Empty And Not IsDate(Cll) Then GoTo Tiep If Cll <> Empty Then If Year(Cll) = 1900 Then Tiep: N = N + 1 If Rng Is Nothing Then Set Rng = Cll Else Set Rng = Union(Rng, Cll) End If End If End If Next Rng.Select MsgBox Str & ": " & N & Str1 Thoat: End Sub
If Year(Cll) = 1900 Then? Vậy 1901 thì bỏ qua? (chẳng hạn cell có giá trị 367)Tiện nhất là Bạn dự file demo gần gần với file thực cho dễ. Mà hình như cái này là kiểm tra ngày trong HSQLCL thì phải
PHP:Sub BoiMau() If Year(Cll) = 1900 Then
Dữ liệu kiểu này là gây khó cho "đồng đội" rồiĐây E đưa file lên Chị giúp E ạ!
Bài toán đặt ra:
1. Tô màu những ô bị lỗi (lỗi về ngày tháng năm, lỗi về giờ) kết quả đã được tô màu vàng như hình trên!
2. Những ô không có dữ liệu và ô có dữ liệu được định dạng đúng không bị tô màu
View attachment 200564
Em xin cảm ơn!
Hi vâng cám ơn Thầy, E làm theo phần mềm định dạng sẵn như vậy nên khó thay đổi Thầy ạ!, Thầy giúp E trong khoảng thời gian "07h00-12h00" và "13h00-18h00" được không Thầy? nếu không được Thầy giúp Em kiểm tra ngày thôi ạ! k cần đến giờ, E cám ơn ThầyDữ liệu kiểu này là gây khó cho "đồng đội" rồi
9h00-10h00 là đúng định dạng. Vậy đương nhiên nhìn bằng mắt sẽ biết 27h00-29h00 hay 12h00-11h00... là sai định dạng
Vấn đề là: Viết code tổng quát cho mọi trường hợp không phải chuyện dễ
Lời khuyên: Với CSDL thì nên có sự chuẩn hóa. Ví dụ thay vì 9h00-10h00 tại sao không chia thành 2 cột "Giờ vào", "Giờ ra" chẳng hạn. Như vậy thì còn tính toán được chứ với 1 chuỗi nhập linh tinh chỉ có tác dụng để nhìn, không tính toán được gì cả
Nên nhớ: Excel dùng để tính toán, không phải để trang trí hay màu mè
Hi nhờ Anh (Chị) chỉnh giúp Em để hiện màu tô những ô bị lỗi đó.Cái đó mới là chọn ô thôi chứ có tô màu gì đâu: Rng.Select mà
Cái Msgbox có nói rồi mà (Chắc là tiếng việt không dấu do vậy bạn dịch không được)
Khi mỗi lần chạy Code em có ghi là "Em đã chọn được: N ô. Làm gì nữa thì tùy nhà Chị nha". rùi mà![]()