Xin được giúp đỡ Code kiểm tra vùng dữ liệu

Liên hệ QC

Bùi Thúy Thúy

Thành viên thường trực
Tham gia
2/7/18
Bài viết
289
Được thích
38
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)
Chup.jpg
Mong sự giúp đỡ của Anh Chị và các Bạn
 

File đính kè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
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à.
 
Upvote 0
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à.
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")
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!
 
Upvote 0
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")
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
 
Lần chỉnh sửa cuối:
Upvote 0
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")
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!
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 chi
 
Upvote 0
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ớ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 !
 
Upvote 0
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ị ạ!
Bài đã được tự động gộp:

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 !
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)1.jpg2.jpg 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 ạ!
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
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 ạ!
À 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ọn :p:p:p
Bài đã được tự động gộp:

Mình thì không biết làm mà cũng không biết nghĩ luôn.
Úi Thầy ơi. Kiểu nầy Thầy sắp la em cái gì nữa đây -\\/.
 
Upvote 0
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 ạ!
Cái đó mới là chọn ô thôi chứ có tô màu gì đâu: Rng.Select
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à :p:p:p
 
Upvote 0
Cao thủ rồi thì anh làm đại cũng được ấy mà nên vậy anh ạ
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ủ.
Hồi xưa tôi học thẳng từ trình nỏ vịt (novice) qua thẳng luôn ếch (ace) luôn. Bỏ qua giai đoạn pờ rồ (pro)
 
Upvote 0
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 ạ!
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
Đâ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
23.jpg
Em xin cảm ơn!
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
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
If Year(Cll) = 1900 Then? Vậy 1901 thì bỏ qua? (chẳng hạn cell có giá trị 367)
 
Upvote 0
Đâ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!
Dữ 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è
 
Upvote 0
Dữ 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 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ầy
Bài đã được tự động gộp:

Cái đó mới là chọn ô thôi chứ có tô màu gì đâu: Rng.Select
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à :p:p:p
Hi nhờ Anh (Chị) chỉnh giúp Em để hiện màu tô những ô bị lỗi đó.
 
Upvote 0
Web KT

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

Back
Top Bottom