Tìm dữ liệu theo nhiều từ khóa khác nhau

  • Thread starter Thread starter KhoiSMC
  • Ngày gửi Ngày gửi
Liên hệ QC
yeah đã xử lý được rồi bạn ạ,

Thanks to nginh.
Khoi
 
Tiếp theo bài này, khi mình nhập thông tin tìm kiếm vào ô B1 và D1 và gộp lại để tìm kiếm tại ô B2.
Khi ô B2 thay đổi nhưng kết quả tính toán không được cập nhật kịp thời mà phải làm thủ công là vào ô B2 gõ enter mới tính toán ra kết quả được.
Cho mình hỏi với làm thế nào để khi cập nhật vào ô B1 hoặc D1 thì bảng tính tự tính ra ô B2 và kết quả một cách tự động nhỉ?
<hình ảnh>
Untitled.jpg
<file đính kèm bên dưới>

Thanks
Khoi
 

File đính kèm

- hình như test thử code của các bài ở trên vẫn chưa đạt yêu cầu ... ^^^^, bạn nên đưa file có nội dung "gần giống" với thực tế để mọi người khỏi phải đoán ...
- khi số liệu nhiều thì code có thể khác xa so với số liệu ít (cứ nhìn cách ông Google tìm kiếm là hiểu được phần nào ... --=0)
 
- hình như test thử code của các bài ở trên vẫn chưa đạt yêu cầu ... ^^^^, bạn nên đưa file có nội dung "gần giống" với thực tế để mọi người khỏi phải đoán ...
- khi số liệu nhiều thì code có thể khác xa so với số liệu ít (cứ nhìn cách ông Google tìm kiếm là hiểu được phần nào ... --=0)

Không ý mình chỉ hỏi làm sao mọi thay đổi của người dùng tác động vào ô B2 thì có thể bố sung đoạn CODE nào để tự động chạy VBA ra kết quả bên dưới thôi.
Bình thường thì mình vẫn làm thủ công là trỏ vào ô B2 và enter thì mới hiện kết quả. <code tìm kiếm đã xong rồi, không cần thay đổi gì cả>.

Khoi
 
Không ý mình chỉ hỏi làm sao mọi thay đổi của người dùng tác động vào ô B2 thì có thể bố sung đoạn CODE nào để tự động chạy VBA ra kết quả bên dưới thôi.
Bình thường thì mình vẫn làm thủ công là trỏ vào ô B2 và enter thì mới hiện kết quả. <code tìm kiếm đã xong rồi, không cần thay đổi gì cả>.

Khoi

- bạn tải file đính kèm kiểm tra kết quả xem có đúng ko nhé !
- nếu kết quả đúng thì off dòng Range("F1") = Range("F1") + 1 đi

Mã:
Dim tmpTarget As Variant

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target, Range("B1,D1")) Is Nothing Then
        Range("F1") = Range("F1") + 1
        tmpTarget = Range("B2").Value
    End If
End Sub

Private Sub Worksheet_Calculate()
    If Range("B2").Value <> tmpTarget Then GPE_loc
End Sub

'Private Sub Worksheet_Change(ByVal Target As Range)
Private Sub GPE_loc()
...
 

File đính kèm

Mã:
Dim tmpTarget As Variant

1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
2.     If Not Intersect(Target, Range("B1,D1")) Is Nothing Then
3.         Range("F1") = Range("F1") + 1
4.         tmpTarget = Range("B2").Value
5.     End If
6. End Sub

Private Sub Worksheet_Calculate()
    If Range("B2").Value <> tmpTarget Then GPE_loc
End Sub

'Private Sub Worksheet_Change(ByVal Target As Range)
Private Sub GPE_loc()
...

Cám ơn bạn, kết quả đúng bạn ạ. Nên mình cũng thử off luôn cả từ dòng 1-->6 đi thấy vẫn đúng không biết có ảnh hưởng gì không.
Trong CODE của bạn bị lặp thủ tục Public Sub GPEX() tại ThisWorkbook và Module1 vậy nên bỏ đi ở chỗ nào bạn nhỉ?

Thanks
Khoi
 
Cám ơn bạn, kết quả đúng bạn ạ. Nên mình cũng thử off luôn cả từ dòng 1-->6 đi thấy vẫn đúng không biết có ảnh hưởng gì không.
Trong CODE của bạn bị lặp thủ tục Public Sub GPEX() tại ThisWorkbook và Module1 vậy nên bỏ đi ở chỗ nào bạn nhỉ?
Thanks
Khoi[/QUOTE]

ah,
mình đưa thử code của bác Batê để Run xem sao đó mà --> bạn bỏ code của Module1 đi là được.
 
Cám ơn bạn phucbugis,

Như vậy để có chạy VBA tự động khi dữ liệu đầu vào có thay đổi chỉ cần thêm đoạn CODE sau:

Mã:
Dim tmpTarget As VariantPrivate
Sub Worksheet_Calculate()
    If Range("B2").Value <> tmpTarget Then GPE_loc            '<-- Tên thủ tục sẽ chạy khi B2 có biến động
End Sub

Cám ơn bạn nhiều
Khoi
 
Web KT

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

Back
Top Bottom