Xem mã hàng theo khách hàng

Liên hệ QC

NguyenthiH

Thành viên mới đăng ký
Tham gia
11/12/16
Bài viết
946
Được thích
172
Giới tính
Nữ
Chào các anh chị!!!
Em đưa file, mong các anh chị giúp cho khi chọn khách hàng ở Validation trong C2 trong sheet!Xem thì lọc ra tổng tồn đầu,, tổng nhập,tổng xuất, và tổng tồn cuối của các mã hàng của khách hàng đó,như trong file em có ví dụ 2 mã hàng.
 

File đính kèm

  • MaHang.xlsx
    85.1 KB · Đọc: 22
Lần chỉnh sửa cuối:
Các anh chị giúp em với.
 
Upvote 0
Dữ liệu bạn cho không rõ ràng, bạn có 3 Sheet dữ liệu Tồn - Nhập - Xuất, cả 3 sheet đều có Khách hàngMã Hàng, mỗi Sheet mỗi khách hàng khác mã khác. Bạn có Sheet xem lọc theo khách hàng, thế khách hàng bạn cần lọc nó theo sheet nào?
 
Upvote 0
Chào các anh chị!!!
Em đưa file, mong các anh chị giúp cho khi chọn khách hàng ở Validation trong C2 trong sheet!Xem thì lọc ra tổng tồn đầu,, tổng nhập,tổng xuất, và tổng tồn cuối của các mã hàng của khách hàng đó,như trong file em có ví dụ 2 mã hàng.
Xem code này thử xem sao bạn
Mã:
Sub TrichLoc()
Dim i As Long, aTonDau(), aNhap(), aXuat(), KetQua(), Dic As Object, k As Long, J As Long, Dieukien
Set Dic = CreateObject("Scripting.Dictionary")
With Sheet1
aTonDau = .Range("B4:H" & .Cells(.Rows.Count, "B").End(xlUp).Row).Value
End With
With Sheet2
aNhap = .Range("B4:H" & .Cells(.Rows.Count, "B").End(xlUp).Row).Value
End With
With Sheet3
aXuat = .Range("B4:H" & .Cells(.Rows.Count, "B").End(xlUp).Row).Value
End With
    ReDim KetQua(1 To UBound(aTonDau) + UBound(aNhap) + UBound(aXuat), 1 To 8)
  For i = 1 To UBound(aTonDau, 1)
    Dieukien = aTonDau(i, 1) & "#" & aTonDau(i, 7)
    If Not Dic.Exists(Dieukien) Then
        k = k + 1
        Dic.Add Dieukien, k
        KetQua(k, 1) = k
        KetQua(k, 2) = aTonDau(i, 1)
        KetQua(k, 3) = aTonDau(i, 4)
        KetQua(k, 4) = aTonDau(i, 5)
        KetQua(k, 8) = aTonDau(i, 7)
    Else
        J = Dic.Item(Dieukien)
        KetQua(J, 4) = KetQua(J, 4) + aTonDau(i, 5)
    End If
   Next
   For i = 1 To UBound(aNhap, 1)
    Dieukien = aNhap(i, 1) & "#" & aNhap(i, 7)
    If Not Dic.Exists(Dieukien) Then
        k = k + 1
        Dic.Add Dieukien, k
        KetQua(k, 1) = k
        KetQua(k, 2) = aNhap(i, 1)
        KetQua(k, 3) = aNhap(i, 4)
        KetQua(k, 5) = aNhap(i, 5)
        KetQua(k, 8) = aNhap(i, 7)
    Else
        J = Dic.Item(Dieukien)
        KetQua(J, 5) = KetQua(J, 5) + aNhap(i, 5)
    End If
   Next
   For i = 1 To UBound(aXuat, 1)
    Dieukien = aXuat(i, 1) & "#" & aXuat(i, 7)
    If Not Dic.Exists(Dieukien) Then
        k = k + 1
        Dic.Add Dieukien, k
        KetQua(k, 1) = k
        KetQua(k, 2) = aXuat(i, 1)
        KetQua(k, 3) = aXuat(i, 4)
        KetQua(k, 6) = aXuat(i, 5)
        KetQua(k, 8) = aXuat(i, 7)
    Else
        J = Dic.Item(Dieukien)
        KetQua(J, 6) = KetQua(J, 6) + aXuat(i, 5)
    End If
   Next
   Dim aKetQua As Variant, jk As Long
    ReDim aKetQua(1 To UBound(KetQua), 1 To 7)
     For i = 1 To UBound(KetQua)
      If KetQua(i, 8) = Sheet4.Range("C2").Value Then
        jk = jk + 1
           aKetQua(jk, 1) = jk
        For J = 2 To 6
            aKetQua(jk, J) = KetQua(i, J)
        Next
         aKetQua(jk, 7) = aKetQua(jk, 4) + aKetQua(jk, 5) - aKetQua(jk, 6)
      End If
     Next
With Sheet4
    .Range("A5:H10000").ClearContents
If jk <> 0 Then
    .Range("A5").Resize(UBound(aKetQua, 1), 7).Value = aKetQua
End If
End With
End Sub
 

File đính kèm

  • MaHang.xlsm
    101.5 KB · Đọc: 26
Upvote 0
Chào các anh chị!!!
Em đưa file, mong các anh chị giúp cho khi chọn khách hàng ở Validation trong C2 trong sheet!Xem thì lọc ra tổng tồn đầu,, tổng nhập,tổng xuất, và tổng tồn cuối của các mã hàng của khách hàng đó,như trong file em có ví dụ 2 mã hàng.
Bạn thử.
Mã:
Sub laygiatri(ByVal dk1 As String)
    Dim arr, kq, i As Long, j As Long, lr As Long, a As Long, dks As String, dic As Object, dk As String, b As Long
    Set dic = CreateObject("scripting.dictionary")
    With Sheets("tondau")
         lr = .Range("B" & Rows.Count).End(xlUp).Row
         arr = .Range("B4:H" & lr).Value
         ReDim kq(1 To UBound(arr), 1 To 7)
    End With
        
        For i = 1 To UBound(arr)
            dks = arr(i, 7)
            If UCase(dk1) = UCase(dks) Then
               dk = arr(i, 1)
               If Not dic.exists(dk) Then
                  a = a + 1
                  kq(a, 1) = a
                  kq(a, 2) = dk
                  kq(a, 3) = arr(i, 2)
                  kq(a, 4) = arr(i, 5)
                  kq(a, 7) = kq(a, 4)
                  dic.Add dk, a
               Else
                  b = dic.Item(dk)
                  kq(b, 4) = arr(i, 5) + kq(b, 4)
                  kq(b, 7) = kq(b, 4)
               End If
           End If
      Next i
   With Sheets("nhap")
        lr = .Range("B" & Rows.Count).End(xlUp).Row
        arr = .Range("B4:H" & lr).Value
        For i = 1 To UBound(arr)
            dks = arr(i, 7)
            If UCase(dk1) = UCase(dks) Then
               dk = arr(i, 1)
               b = dic.Item(dk)
               If b Then
                  kq(b, 5) = kq(b, 5) + arr(i, 5)
                  kq(b, 7) = kq(b, 4) + kq(b, 5)
               End If
           End If
        Next i
   End With
   With Sheets("xuat")
        lr = .Range("B" & Rows.Count).End(xlUp).Row
        arr = .Range("B4:H" & lr).Value
        For i = 1 To UBound(arr)
            dks = arr(i, 7)
            If UCase(dk1) = UCase(dks) Then
               dk = arr(i, 1)
               b = dic.Item(dk)
               If b Then
                  kq(b, 6) = kq(b, 6) + arr(i, 5)
                  kq(b, 7) = kq(b, 4) + kq(b, 5) - kq(b, 6)
               End If
           End If
        Next i
   End With
   With Sheets("xem")
        lr = .Range("B" & Rows.Count).End(xlUp).Row
        If lr > 4 Then .Range("A5:G" & lr).ClearContents
        If a Then .Range("A5:G5").Resize(a).Value = kq
  End With
End Sub
 

File đính kèm

  • MaHang.xlsm
    100.9 KB · Đọc: 15
Upvote 0
Cám ơn bạn @vanaccex nhiều, đúng rồi ạ, bạn làm cho mình các cell D3. E3, F3, như trong file mình có ghi chú với.
Cám ơn bạn @snow25 nhiều, file bạn chưa đúng, cột Đvt lại lấy loại hàng, và mình thử chạy khách hàng FASH thì thấy sai, không có SL nhập chỉ có tồn, và mấy khách hàng khác cũng sai. Mong bạn chỉnh code lại dùm.
 
Upvote 0
Cám ơn bạn @vanaccex nhiều, đúng rồi ạ, bạn làm cho mình các cell D3. E3, F3, như trong file mình có ghi chú với.
Cám ơn bạn @snow25 nhiều, file bạn chưa đúng, cột Đvt lại lấy loại hàng, và mình thử chạy khách hàng FASH thì thấy sai, không có SL nhập chỉ có tồn, và mấy khách hàng khác cũng sai. Mong bạn chỉnh code lại dùm.
Cái sum là sao vậy bạn ! Hiện tại là mình đã tính tổng theo từng mã và khách hàng rồi nhỉ
 
Upvote 0
Là vầy nè bạn, nếu chọn khách hàng MORE thì cell D3 là Sum của D5:D183, E3=Sum(E5:E183), F3=Sum(F5:F183), G3=Sum(G5:G183)cón nếu khách hàng là TS14 thì E3=Sum(E5:E81), D3=Sum(D5:D81), F3=Sum(F5:F81), G3=Sum(G5:G81)
 
Upvote 0
Là vầy nè bạn, nếu chọn khách hàng MORE thì cell D3 là Sum của D5:D183, E3=Sum(E5:E183), F3=Sum(F5:F183), G3=Sum(G5:G183)cón nếu khách hàng là TS14 thì E3=Sum(E5:E81), D3=Sum(D5:D81), F3=Sum(F5:F81), G3=Sum(G5:G81)
Vậy thì bạn thêm chỗ kết quả sửa thành thế này
Mã:
With Sheet4
    .Range("A5:H10000").ClearContents
If jk <> 0 Then
    .Range("A5").Resize(UBound(aKetQua, 1), 7).Value = aKetQua
    .Range("D3").Resize(1, 4).Formula = "=sum(D5:D" & jk + 4 & ")"
End If
End With
 
Upvote 0
Là vầy nè bạn, nếu chọn khách hàng MORE thì cell D3 là Sum của D5:D183, E3=Sum(E5:E183), F3=Sum(F5:F183), G3=Sum(G5:G183)cón nếu khách hàng là TS14 thì E3=Sum(E5:E81), D3=Sum(D5:D81), F3=Sum(F5:F81), G3=Sum(G5:G81)
Bạn thử thêm 1sub . Lấy dòng cuối. Tại E3 =sum(range ("e5:e"&dongcuoi))
 
Upvote 0
Vậy thì bạn thêm chỗ kết quả sửa thành thế này
Mã:
With Sheet4
    .Range("A5:H10000").ClearContents
If jk <> 0 Then
    .Range("A5").Resize(UBound(aKetQua, 1), 7).Value = aKetQua
    .Range("D3").Resize(1, 4).Formula = "=sum(D5:D" & jk + 4 & ")"
End If
End With
Chà chà thấy chị code lên tay quá.
 
Upvote 0
Vậy thì bạn thêm chỗ kết quả sửa thành thế này
Mã:
With Sheet4
    .Range("A5:H10000").ClearContents
If jk <> 0 Then
    .Range("A5").Resize(UBound(aKetQua, 1), 7).Value = aKetQua
    .Range("D3").Resize(1, 4).Formula = "=sum(D5:D" & jk + 4 & ")"
End If
End With
Chị siêu quá
vanaccex
 
Upvote 0
Cần đề phòng trường hợp mã hàng (nào đó) chưa có trong trang 'TonDau', nhưng có trong 'Nhap' (hay cả trong 'Xuat')
Cho nên ta phải lập danh sách duy nhất cho mã hàng của 1 khách hàng đã được chọn
Danh sách này phải trãi qua 3 trang tính mà tổng hợp lại, có đúng vậy không chủ bài đăng?
 
Upvote 0
Tới bác @SA_DQ , em nghĩ không cần, nếu vậy thì mấy mã đó sẽ không có "Tồn Đầu" chỉ có nhập, nếu không tồn không nhập mà có xuất thì phải xem lại (Sai)
 
Upvote 0
Thủ kho này to hơn thủ trưởng rồi!
Cũng có trường hợp xuất cho phân xưỡng, nhưng nhà cung cấp chưa ra hóa đơn để nhập hàng vô kho mà!
 
Upvote 0
Tới bác @SA_DQ , em nghĩ không cần, nếu vậy thì mấy mã đó sẽ không có "Tồn Đầu" chỉ có nhập, nếu không tồn không nhập mà có xuất thì phải xem lại (Sai)

Anh thấy ý bác SA_DQ đúng đó. Em phải có một bảng mã hàng tổng, đầy đủ nhất sau đó dựa vào đó mà tổng hợp dữ liệu.
Anh thấy tổng mã MORE của cả 3 sheet Tồn, Nhâp, Xuất là 320 mã. Tổng truy vấn ra 183 mã. Vậy code cho báo cáo có không lấy mã hàng nào có Tồn - Nhập - Xuất có giá trị = 0 không?
 
Upvote 0
Cũng có trường hợp xuất cho phân xưỡng, nhưng nhà cung cấp chưa ra hóa đơn để nhập hàng vô kho mà!
Hàng vào kho không có hóa đơn, ra khỏi kho cũng không có hoạ đơn? Làm ăn kể cũng lạ. Người ta bắt được thì rất rách việc. Mà trên đường hàng về kho mà người ta bắt được cũng chết. Ngay cả thị trường đen khi người ta đi lấy hàng nhiều người vấn phải mua / xin hóa đơn giả để đi đường cho an toàn.
Thủ trưởng này là thủ trưởng kiểu ra lệnh miệng: em cứ làm, sai đâu anh chịu? :D
 
Upvote 0
(+) Bây giờ thì có chuyện các chủ đầu tư (nhất là trong ngành xây dựng) trong tháng cứ lấy hàn theo hóa đơn tạm (Hóa đơn xanh), cuối tháng mới thanh toán 3 bên
(+) Cũng có chuyện Mua hàng xách tay bên Âu Nhật (Thanh toán bằng ngoại tệ) Mà thời bao cấp thì CQ có đô cũng không dễ xài, nếu không có giấy phép con (. . . )
Nhà máy thì làm ca kíp liên tù tì, ngõ hầu tiết kiệm năng lượng, Vậy hư máy vô ngày thứ 7 hay T.`6 phải chờ đến thứ 2 tuần sau mới nhập kho & xuất phụ tùng sửa theo thủ tục sao?

Cái bài bản mà bạn nói đó không thích hợp lắm khi áp dụng cho chu trình SX của ta hiện nay; Cái đó là chu trình SX thời bao cấp & không thể năng động!
Cái đó chỉ thích hợp với các nước có nền cônghiệp tiên tiến xa với & mơ ước đối với VN!
:D
Nhớ cách đây hơn 20 năm; N/m mình mua vòng bi từ Nhật xách tay chỉ trong ngày; Nhưng thủ tục phải có chữ ký của thứ trưởng (trở lên) thời đó;Nên tháng sau mới nhập & xuất kho được.
 
Lần chỉnh sửa cuối:
Upvote 0
Bất cứ xuất nhập kho nào cũng phải có hóa đơn, hoặc chứng cứ nào đấy. Có thể bạn gọi là hóa đơn xanh, đỏ. Nhưng phải có chứng cứ. Không thể vào, ra kho không có chứng cứ nào.

Tôi tin là các cơ quan quản lý sẽ không cho phép nhập, xuất kho không có chứng cứ, dù bạn viện lý do sản xuất nào chăng nữa. Vd. người ta có thể chấp nhận cho phép thủ trưởng ký lệnh xuất và ghi phiếu sau. Làm gì có chuyện do nhu cầu sản xuất nên tôi cho mình quyền vi phạm pháp luật.

Nhưng nếu không chờ tới thứ 2 mà xuất luôn ngày thứ 7? Thứ 2 hay 7 thì đều phải có phiếu xuất. Phải tới thứ 2 mới có thể viết phiếu xuất? Tại sao không thể viết phiếu xuất vào thứ 7? Rằng thứ 7 không có thủ kho, thứ 2 mới đi làm? Thế công nhân người ta phá khóa vào kho lấy hàng? Hay là thứ 7 thủ kho đau tay nên thứ 2 mới viết phiếu được.

Không ở đâu chấp nhận vào và ra kho không có "dấu vết". Nếu không là phiếu hoàn chỉnh thì cũng phải là chứng cứ tạm thời nào đấy.

Ở Ba Lan phòng thuế ngoài kiểm tra ở trụ sở người ta có quyền kiểm tra tại nơi buôn bạn, ngoài chợ. Mặt hàng này có phiếu không, bao nhiêu, ghi trong sổ không. Nếu kiểu bán trước, trình phiếu mua sau thì ai quản lý được? Tôi mua 1000 chiếc áo nhưng không có phiếu, không ghi sổ? Nếu không may bị kiểm tra thì nói sẽ có phiếu sau 1 tháng? Nếu may mắn thì bán hết và không ghi sổ?
Thứ trưởng thì đã là gì. Nhiều Bộ trưởng còn phạm pháp hàng ngày. Nhưng nếu người ta phát hiện ra thì sẽ có chuyện. Sẽ ra tòa, sẽ đi tù. Kinh doanh lớn hay nhỏ thì cũng phải theo luật. Chả có ông Bộ trưởng nào có quyền làm thay pháp luật.
 
Lần chỉnh sửa cuối:
Upvote 0
Mình đưa Ô. Thứ trưởng kí vào là vì xài tiền đô thời bấy giờ của doanh nghiệp (trừ liên doanh) là phải có chữ kí duyệt của Ô. ta mới được hạnh toán.
Kiểu xuất khống hay thẻ kho âm cũng có thể hiểu tạm xuất tái nhập hay tạm nhập tái xuất chăng?

Chúc mừng năm mới vui vẻ & tràn đầy hạnh phúc!
 
Upvote 0
Web KT
Back
Top Bottom