Chào mừng đến với Diễn đàn Dân Kế Toán - Kế toán tổng hợp thực tế.
Kết quả 1 đến 7 của 7
  1. #1
    Ngày tham gia
    Nov 2015
    Bài viết
    0

    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.

  2. #2
    Ngày tham gia
    Nov 2015
    Bài viết
    0
    Ðề: Hỏi về tìm kiếm dữ liệu từ nhiều Sheet và hiển thị kết quả trên form




    Trích dẫn Gửi bởi kamala
    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.

  3. #3
    Ngày tham gia
    Apr 2016
    Bài viết
    271
    Ðề: 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ây giờ add dòng code nữa dể cho tạo ra 1 trang Result , trong đó list ra hết đã tìm





    hoặc là




  4. #4
    Ngày tham gia
    Nov 2015
    Bài viết
    0
    Ðề: 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

  5. #5
    Ngày tham gia
    Aug 2015
    Bài viết
    5
    Ðề: Hỏi về tìm kiếm dữ liệu từ nhiều Sheet và hiển thị kết quả trên form




    Trích dẫn Gửi bởi Wind_Flower
    Đượ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

  6. #6
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Ðề: Hỏi về tìm kiếm dữ liệu từ nhiều Sheet và hiển thị kết quả trên form




    Trích dẫn Gửi bởi thecuong0
    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

  7. #7
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Ðề: 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

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •