Viết code tìm kiếm và ra thông báo địa chỉ ô chứa giá trị

Liên hệ QC

nghiaquangtran

Thành viên chính thức
Tham gia
28/10/08
Bài viết
79
Được thích
25
Chào các bạn

Mình có 1 file số liệu khoảng 20 ngìn dòng và 150 cột, file này còn được cập nhật thêm có thể lên tới 40 ngìn dòng và 200 cột.

...nếu mình muốn viết VBA để tìm kiếm theo điều kiện: nếu có bất kỳ ô nào chứa số liệu thỏa mãn điều kiện đặt ra (ví dụ = 0 hay chứa giá trị âm..v.v)...thì ra 1 msg box cho biết vị trí ô chứa giá trị cần tìm đó.

Các bạn giúp mình với nhé.

Cám ơn nhiều
 
Bạn chạy thủ tục này nhé (nếu thêm điều kiện thì bổ sung vào):

Mã:
Sub XacDinh()
    Dim Ogiatri As Range
    
    For Each Ogiatri In ActiveSheet.UsedRange
        If Ogiatri.Value = "0" Then
            Ogiatri.Select
            MsgBox "O co dia chi " & Ogiatri.Address & " co gia tri la 0"
        End If
    Next
End Sub
 
Upvote 0
Bạn chạy thủ tục này nhé (nếu thêm điều kiện thì bổ sung vào):

Mã:
Sub XacDinh()
    Dim Ogiatri As Range
 
    For Each Ogiatri In ActiveSheet.UsedRange
        If Ogiatri.Value = "0" Then
            Ogiatri.Select
            MsgBox "O co dia chi " & Ogiatri.Address & " co gia tri la 0"
        End If
    Next
End Sub

Cám ơn bạn,... nếu mình muốn in ra 1 list những địa chỉ chứa giá trị cần tìm thì có dc không
 
Upvote 0
Upvote 0

File đính kèm

  • code tim kiem theo dieu kien.xls
    34 KB · Đọc: 31
Lần chỉnh sửa cuối:
Upvote 0
View attachment 33149

Mình gửi file nhé, code mình mới cho tô màu những ô có giá trị, nhưng mình không biết cách in ra danh sach các ô chứa giá trị thỏa mãn

Cám ơn các bạn
Cái vụ tô màu này không nên dùng code ---> Conditional Formating làm việc này nhanh hơn
Còn việc tạo list tất nhiên không có vấn đề, có điều tôi biết rõ ý bạn muốn tạo list tìm được vào đâu? Cho vào MsgBox? Cho vào 1 vùng hay cho vào 1 UserForm ---> Nói rõ 1 chút
 
Upvote 0
Cái vụ tô màu này không nên dùng code ---> Conditional Formating làm việc này nhanh hơn
Còn việc tạo list tất nhiên không có vấn đề, có điều tôi biết rõ ý bạn muốn tạo list tìm được vào đâu? Cho vào MsgBox? Cho vào 1 vùng hay cho vào 1 UserForm ---> Nói rõ 1 chút

Cái vụ tô màu mình chỉ tập tành viết í mà...hihi


Bạn chỉ giúp mình cả 2 cách cho vào 1 vùng hay UserForm nhé

Thank you muchiez
 
Lần chỉnh sửa cuối:
Upvote 0
Cái vụ tô màu mình chỉ tập tành viết í mà...hihi


Bạn chỉ giúp mình cả 2 cách cho vào 1 vùng hay UserForm nhé

Thank you muchiez
Thì vầy thôi:
PHP:
Private Sub CommandButton1_Click()
  Dim Clls As Range, Dic
  Set Dic = CreateObject("Scripting.Dictionary")
  For Each Clls In ActiveSheet.UsedRange
    If Clls.Value < 0 Then Dic.Add Clls.Address & " = " & Clls.Value, ""
  Next
  ListBox1.List = Dic.Keys
End Sub
Phần tô màu tôi dùng Conditional Formating ---> Tức vừa gõ vào, nếu số <0 nó tô ngay mà khỏi cần code

Còn đây là code cho toàn bộ vào MsgBox (đơn giản hơn)
PHP:
Sub Kiemtra()
  Dim Clls As Range, Dic
  Set Dic = CreateObject("Scripting.Dictionary")
  For Each Clls In ActiveSheet.UsedRange
    If Clls.Value < 0 Then Dic.Add Clls.Address & " = " & Clls.Value, ""
  Next
  MsgBox "Cac cell < 0 la" & Chr(10) & Join(Dic.Keys, Chr(10))
End Sub
 

File đính kèm

  • code tim kiem theo dieu kien.xls
    35 KB · Đọc: 35
  • Kiemtra.xls
    25 KB · Đọc: 42
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Thì vầy thôi:
PHP:
Private Sub CommandButton1_Click()
  Dim Clls As Range, Dic
  Set Dic = CreateObject("Scripting.Dictionary")
  For Each Clls In ActiveSheet.UsedRange
    If Clls.Value < 0 Then Dic.Add Clls.Address & " = " & Clls.Value, ""
  Next
  ListBox1.List = Dic.Keys
End Sub
Phần tô màu tôi dùng Conditional Formating ---> Tức vừa gõ vào, nếu số <0 nó tô ngay mà khỏi cần code

Thưc ra là file số liệu minh nhận hàng tháng từ bộ phận khác và mình thường phải past special vào file mình đã đặt sẵn Conditional Fomarting nên mình tính viết code để mỗi lần nhận data chỉ việc chạy code.

Cám ơn các bạn

Thì vầy thôi:
PHP:
Private Sub CommandButton1_Click()
  Dim Clls As Range, Dic
  Set Dic = CreateObject("Scripting.Dictionary")
  For Each Clls In ActiveSheet.UsedRange
    If Clls.Value < 0 Then Dic.Add Clls.Address & " = " & Clls.Value, ""
  Next
  ListBox1.List = Dic.Keys
End Sub
Phần tô màu tôi dùng Conditional Formating ---> Tức vừa gõ vào, nếu số <0 nó tô ngay mà khỏi cần code

Bạn ơi...nếu mình muốn in kết quả ra thẳng 1 sheet nào đó thì có dc không
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Bạn ơi...nếu mình muốn in kết quả ra thẳng 1 sheet nào đó thì có dc không
Đương nhiên là được ---> Chỉ cần chú ý tên sheet (vì nhập và xuất nằm tại 2 sheet khác nhau)
Chẳng hạn thế này:
PHP:
Sub Kiemtra()
  Dim Clls As Range, Dic
  Set Dic = CreateObject("Scripting.Dictionary")
  Sheet2.Range("A:A").ClearContents
  For Each Clls In Sheet1.UsedRange
    If Clls.Value < 0 Then Dic.Add Clls.Address & " = " & Clls.Value, ""
  Next
  Sheet2.Range("A1").Resize(Dic.Count) = WorksheetFunction.Transpose(Dic.Keys)
End Sub
- Dử liệu nhập nằm tại sheet1
- Dử liệu xuất tại sheet2, cell A1
Bạn có thể chỉnh lại code theo tình hình cụ thể trên máy bạn
 
Upvote 0
Web KT
Back
Top Bottom