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!!!!!
- Stt không liên tục là như thế nào?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 đỡ.
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
với loại dữ liệu như thế này sao không dùng pivot table nhỉ.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
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
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
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.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??