Code tìm số phiếu (6 người xem)

  • Thread starter Thread starter DMQ
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

DMQ

Thành viên dốt
Tham gia
21/3/12
Bài viết
722
Được thích
57
Giới tính
Nam
Em có file này nhờ các AC viết code tìm và lọc ra số phiếu dùm edum2Xin các AC xem file đính kèm.
 

File đính kèm

Bạn tham khảo File đã sửa ở dưới.........
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Sao đâu có lọc ra dữ liệu theo số phiếu đâu bạn, chỉ ra được Msgbox thôi ah!! chưa đúng theo file gốc. Xin các AC coi lại dùm!!!!!
 
Upvote 0
Sao đâu có lọc ra dữ liệu theo số phiếu đâu bạn, chỉ ra được Msgbox thôi ah!! chưa đúng theo file gốc. Xin các AC coi lại dùm!!!!!

Bạn cần code hay cần xử lý vấn đề.
Yêu cầu của bạn cũng đơn giản mà, Phần hiện thông báo chỉ cần dùng Validation, còn phần dữ liệu chi tiết dùng hàm Index là xong
 
Upvote 0
Mình cần code để xử lý vấn đề. Nếu dùng validation và hàm Index thì máy bàn của Cty mình dò rất lâu(vì Cty trang bị máy yếu quá, XP SP2 ram 256, HDD 20GB và dữ liệu rất nhiều dòng). Mình thấy code của bạn dhn46 chạy không đúng ý mình.
 
Upvote 0
Do sơ suất, bạn xem lại File
 

File đính kèm

Upvote 0
Vẫn chưa đúng, khi gỏ số phiếu khác thì bị sai không liên tục STT, và cột B4(Ngày), B5(đơn vị nhận hàng), B6(Đơn hàng) phải lọc theo số phiếu đó luôn!!! Mong các AC giúp đỡ.
 
Upvote 0
Vẫn chưa đúng, khi gỏ số phiếu khác thì bị sai không liên tục STT, và cột B4(Ngày), B5(đơn vị nhận hàng), B6(Đơn hàng) phải lọc theo số phiếu đó luôn!!! Mong các AC giúp đỡ.
- Stt không liên tục là như thế nào?
- Yêu cầu của bạn trong file có mỗi cái mũi tên yêu cầu đơn hàng thay đổi có nói gì tới ngày, đơn vị nhận và đơn hàng đâu
 

File đính kèm

Upvote 0
Ý của mình là khi gỏ đúng số phiếu, thì sẽ lọc ra tất cả dữ liệu liên quan tới phiếu đó.(Ngày,đơn vị nhận hàng, đơn hàng và SL C/Từ , Thực nhập của các loại hàng hóa theo số phiếu đó) Bài Sp(3) của bạn vẫn chưa đúng ý mình(vì khi gỏ số phiếu khác vẫn chưa lọc ra). Mong các AC giúp đỡ.
 
Upvote 0
Bạn xem file xem đúng ý bạn chưa nhé.

Mã:
Public Sub Xuan()
Dim Rng(), Arr(), I As Long, J As Long, K As Long, SoPhieuXuat As String
Dim Ngay As Date, DVNH As String, DonHang As String
With Sheet1
    Rng = .Range(.[A2], .[A65536].End(xlUp)).Resize(, 9).Value
End With
ReDim Arr(1 To UBound(Rng, 1), 1 To 5)
With Sheet2
    SoPhieuXuat = .[C3].Value
    For I = 1 To UBound(Rng, 1)
    If Rng(I, 2) = SoPhieuXuat Then
        K = K + 1: Arr(K, 1) = K
        For J = 2 To 5
            Arr(K, J) = Rng(I, J + 4)
        Next J
        Ngay = Rng(I, 1)
        DVNH = Rng(I, 3)
        DonHang = Rng(I, 4)
    End If
    Next I
    .[C4] = Ngay
    .[C5] = DVNH
    .[C6] = DonHang
    .[A8:F1000].Clear
    If K Then
        .[B8].Resize(K, 5).Value = Arr
        .[B8].Resize(K, 5).Borders.LineStyle = xlContinuous
    Else
        MsgBox "Khong co SO PHIEU nay! Nhap lai!", , "GPE"
        .[C3] = ""
        .[C3].Select
    End If
End With
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Bạn xem file xem đúng ý bạn chưa nhé.

Mã:
Public Sub SoPhieu()
Dim Rng(), Arr(), I As Long, J As Long, K As Long, SoPhieuXuat As String
Dim Ngay As Date, DVNH As String, DonHang As String
With Sheet1
    Rng = .Range(.[A2], .[A65536].End(xlUp)).Resize(, 9).Value
End With
ReDim Arr(1 To UBound(Rng, 1), 1 To 5)
With Sheet2
    SoPhieuXuat = .[C3].Value
    For I = 1 To UBound(Rng, 1)
    If Rng(I, 2) = SoPhieuXuat Then
        K = K + 1: Arr(K, 1) = K
        For J = 2 To 5
            Arr(K, J) = Rng(I, J + 4)
        Next J
        Ngay = Rng(I, 1)
        DVNH = Rng(I, 3)
        DonHang = Rng(I, 4)
    End If
    Next I
    .[C4] = Ngay
    .[C5] = DVNH
    .[C6] = DonHang
    .[A8:F1000].Clear
    If K Then
        .[B8].Resize(K, 5).Value = Arr
        .[B8].Resize(K, 5).Borders.LineStyle = xlContinuous
    Else
        MsgBox "Khong co SO PHIEU nay! Nhap lai!", , "GPE"
    End If
End With
End Sub
với loại dữ liệu như thế này sao không dùng pivot table nhỉ.
 
Upvote 0
Thất nghiệp nên tham gia cho vui

Trước tiên tạo cho ô C3 cái Validation cho khỏi nhập sai
PHP:
Sub validate_list()
Dim dl(), i
dl = Sheet1.Range(Sheet1.[B4], Sheet1.[B65536].End(3)).Value
With CreateObject("scripting.dictionary")
   For i = 1 To UBound(dl)
      If dl(i, 1) <> "" Then
         If Not .exists(dl(i, 1)) Then .Add dl(i, 1), ""
      End If
   Next
   [C3].Validation.Delete
   [C3].Validation.Add 3, , , Join(.keys, ",")
End With
End Sub

Tiếp theo dùng tuyệt chiêu của AdvancedFilter để lọc có điêu kiện cho khoẻ
Tại C2 copy cái tiêu đề Số phiếu xuất vào rồi cho font màu trắng
PHP:
Sub Loc_co_dk()
   [B8:F1000].ClearContents
   With Sheet1
      .Range(.[A3], .[I65536].End(3)).AdvancedFilter 2, [C2:C3], [C7:F7]
      [C4] = .[B:B].Find([C3]).Offset(, -1)
      [C5] = .[B:B].Find([C3]).Offset(, 1)
      [C6] = .[B:B].Find([C3]).Offset(, 2)
   End With
   Range([C8], [C65536].End(3)).Offset(, -1) = [row(a:a)]
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Cám ơn Anh Quanghai1969 nhiều, đúng ý em rồi. Anh cho em hỏi đoạn code nào mà chạy được số thứ tự 1,2,3..v..v. vậy anh? và sao khi chạy code tìm số phiếu là có 2 name Criteria(Sheet2$C$:$C$3) và Extract(Sheet$C$7:$F$7) vậy Anh??
 
Upvote 0
Cám ơn Anh Quanghai1969 nhiều, đúng ý em rồi. Anh cho em hỏi đoạn code nào mà chạy được số thứ tự 1,2,3..v..v. vậy anh? và sao khi chạy code tìm số phiếu là có 2 name Criteria(Sheet2$C$:$C$3) và Extract(Sheet$C$7:$F$7) vậy Anh??
Có ai biết tại sao Bác Bill tạo ra 2 cái names hay không chứ mình thì hỏng biết.
Muốn biết dòng code nào có chức năng gì thì tự mày mò sẽ hiểu thôi. Cứ cho cái dấu nháy phía trước dòng lệnh để vô hiệu hoá dòng lệnh đó rồi xem kết quả. Từ đó rút ra bài học. Mình toàn học theo cách này.
Code của mình toàn bộ là chế biến của các anh chị trên diễn đàn thôi. Nên cũng sợ bị vi phạm bản quyền lắm. Cũng may là chưa ai kiện hết.
Thân
 
Upvote 0
Web KT

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

Back
Top Bottom