Hỏi về tìm kiếm dữ liệu từ nhiều Sheet và hiển thị kết quả trên form

kamala

New Member
Hội viên mới
xin các anh chị giúp e với...Em có file như đính kèm gồm các sheet là từng ngày,bây giờ em mún làm 1 cái form có thể nhập mã số của khách hàng rồi nhấn tìm kiếm thì nó sẽ liệt kê ra công việc đã làm của khách hàng trong các ngày ạ...Mong các anh chị giúp em vì em chưa rành về VBA lắm.
 

Đính kèm

  • NKSG-PR10.xls
    77 KB · Lượt xem: 342
Ðề: Hỏi về tìm kiếm dữ liệu từ nhiều Sheet và hiển thị kết quả trên form

xin các anh chị giúp e với...Em có file như đính kèm gồm các sheet là từng ngày,bây giờ em mún làm 1 cái form có thể nhập mã số của khách hàng rồi nhấn tìm kiếm thì nó sẽ liệt kê ra công việc đã làm của khách hàng trong các ngày ạ...Mong các anh chị giúp em vì em chưa rành về VBA lắm.

Để thuận tiện theo dõi và tổng hợp dữ liệu:
Để tìm cho đơn giản bạn nên gộp chung vào 1 sheet, đơn giản nhất là dùng Auto Fillter chọn 1 phát là xong, đâu cần suy nghĩ gì nhiều (cái này bác Bill đã có sẳn rồi bạn cứ việc dùng thôi).

Còn việc tìm nhiều sheet thì làm cũng được, nhưng vụ này bác Bill cũng không khoái lắm nên bác cũng đã tạo sẳn công cụ tìm kiếm trên từng sheet.

Theo tôi nên gộp dữ liệu theo dõi ở các ngày vào chung 1 sheet, để tổng hợp thì sử dụng Pivottable là đáp ứng được công việc rồi, muốn hoành tráng thì sử dụng Form và viết Macro để điều khiển, nhưng vụ này thì tôi cũng không khoái lắm vì muốn giúp thì cũng phải tốn rất nhiều công sức và mất thời gian.
 
Ðề: Hỏi về tìm kiếm dữ liệu từ nhiều Sheet và hiển thị kết quả trên form

Được hết . Để suy nghĩ đã .
Ví dụ sơ xài, thử nhé

Module1

Code:
Public Sub FindText()

Dim ws As Worksheet, Found As Range
Dim myText As String, FirstAddress As String
Dim AddressStr As String, foundNum As Integer

myText = InputBox("Enter text to find")

If myText = "" Then Exit Sub

For Each ws In ThisWorkbook.Worksheets
With ws


Set Found = .UsedRange.Find(what:=myText, LookIn:=xlValues, LookAt:=xlPart, MatchCase:=False)

If Not Found Is Nothing Then
FirstAddress = Found.Address

Do
foundNum = foundNum + 1
AddressStr = AddressStr & .Name & " " & Found.Address & vbCrLf

Set Found = .UsedRange.FindNext(Found)

Loop While Not Found Is Nothing And Found.Address <> FirstAddress
End If

myNext:
End With

Next ws

If Len(AddressStr) Then
MsgBox "Found: MSKH """ & myText & """ " & foundNum & " times." & vbCr & AddressStr, vbOKOnly, """ & myText"

Else:

MsgBox "Unable to find " & myText & " in this workbook.", vbExclamation
End If
End Sub

Kết qủa:

Kết qủa: Enter số MSKH

020_zpsaadfac84.jpg


Bây giờ add dòng code nữa dể cho tạo ra 1 trang Result , trong đó list ra hết đã tìm

1_zps272b18af.jpg

4_zps8d67cb9c.jpg

5_zps8a791d7f.jpg


hoặc là


2_zpsbd535ce8.jpg

3_zps54407043.jpg
 
Sửa lần cuối:
Ðề: Hỏi về tìm kiếm dữ liệu từ nhiều Sheet và hiển thị kết quả trên form

Làm kiểu Form thì từ từ có thời gian rảnh mới viết
 
Ðề: Hỏi về tìm kiếm dữ liệu từ nhiều Sheet và hiển thị kết quả trên form

Được hết . Để suy nghĩ đã .
Ví dụ sơ xài, thử nhé

Module1

Code:
Public Sub FindText()

Dim ws As Worksheet, Found As Range
Dim myText As String, FirstAddress As String
Dim AddressStr As String, foundNum As Integer

myText = InputBox("Enter text to find")

If myText = "" Then Exit Sub

For Each ws In ThisWorkbook.Worksheets
With ws


Set Found = .UsedRange.Find(what:=myText, LookIn:=xlValues, LookAt:=xlPart, MatchCase:=False)

If Not Found Is Nothing Then
FirstAddress = Found.Address

Do
foundNum = foundNum + 1
AddressStr = AddressStr & .Name & " " & Found.Address & vbCrLf

Set Found = .UsedRange.FindNext(Found)

Loop While Not Found Is Nothing And Found.Address <> FirstAddress
End If

myNext:
End With

Next ws

If Len(AddressStr) Then
MsgBox "Found: MSKH """ & myText & """ " & foundNum & " times." & vbCr & AddressStr, vbOKOnly, """ & myText"

Else:

MsgBox "Unable to find " & myText & " in this workbook.", vbExclamation
End If
End Sub

Kết qủa:

Kết qủa: Enter số MSKH

bác ơi cho cái code list hết ra luôn với e làm mà không list ra
 
Ðề: Hỏi về tìm kiếm dữ liệu từ nhiều Sheet và hiển thị kết quả trên form

bác ơi cho cái code list hết ra luôn với e làm mà không list ra

hihihihi dĩ nhiên rồi . Cái Code đó chỉ hiện ra Msgbox thôi . Còn muốn ra Sheet và Msgbox thì chỉ có thêm 3 hàng code nữa,đâu có post đau mà ra hihihii
Viết vậy theo cố excel 2003 . Viết 2010 & 2013 thì nhỏ gọn, dùng loop search khác
 
Sửa lần cuối:
Ðề: Hỏi về tìm kiếm dữ liệu từ nhiều Sheet và hiển thị kết quả trên form

Kiểu này ko dùng FORM, chỉ tạo thêm 1 Sheet Result rồi run macro FindPatient
Header trong Sheet Result nằm ở row 3, y như 13 sheets data, do đó khi tìm được thì nó sẻ điền từ row 4 trở xuống . Code này tôi viết cho BOM (Excel 2003)
Phần popup address chỉ là phụ, vì tôi dùng để kiểm tra , nên cậu có thể bỏ

Form chỉ màu mè cho con nít . hahahhaa

Public Sub FindPatient()

Dim ws As Worksheet, Found, p As Range
Dim myText As String, FirstAddress As String
Dim AddressStr As String, foundNum As Integer

Sheets("Result").Select
Rows("4:40").Select
Selection.Delete Shift:=xlUp

myText = InputBox("Enter text to find")

If myText = "" Then Exit Sub

For Each ws In ThisWorkbook.Worksheets
With ws
If ws.Name = "Result" Then GoTo myNext

Set Found = .UsedRange.Find(what:=myText, LookIn:=xlValues, LookAt:=xlPart, MatchCase:=False)

If Not Found Is Nothing Then
FirstAddress = Found.Address

Do
foundNum = foundNum + 1
AddressStr = AddressStr & .Name & " " & Found.Address & vbCrLf

Set Found = .UsedRange.FindNext(Found)

Found.EntireRow.Copy Destination:=Worksheets("Result").Range("A65536").End(xlUp).Offset(1, 0)

Loop While Not Found Is Nothing And Found.Address <> FirstAddress
End If

myNext:
End With

Next ws

If Len(AddressStr) Then
MsgBox "Found: """ & myText & """ " & foundNum & " times." & vbCr & _
AddressStr, vbOKOnly, myText & " found in these cells"
Else:

MsgBox "Unable to find " & myText & " in this workbook.", vbExclamation
End If
End Sub
 

CẨM NANG KẾ TOÁN TRƯỞNG


Liên hệ: 090.6969.247

KÊNH YOUTUBE DKT

Cách làm file Excel quản lý lãi vay

Đăng ký kênh nhé cả nhà

SÁCH QUYẾT TOÁN THUẾ


Liên hệ: 090.6969.247

Top