Chọn các mã hàng tự động theo ngày, không trùng nhau.

Liên hệ QC

LikeIt

Thành viên tiêu biểu
Tham gia
16/6/06
Bài viết
415
Được thích
254
Nghề nghiệp
Others
KG các anh chị,

Em có một bài liên quan đến việc kiểm đếm kho, hàng ngày trong kho có khoảng vài nghìn mã hàng, làm thế nào mỗi ngày tổng số lượng mã hàng đó chia cho 25 ngày làm việc, và tự động nhảy ra số lượng tương ứng để em kiểm kê số lượng đó, và số lượng đã kiểm tra thì không được lặp lại trong vòng một tháng. Sau đó đến tháng tiếp theo lại tính từ đầu. Mong các anh chị tạo giúp một code trong macro để em chạy thử. Xin xem file đính kèm để hiểu rõ hơn.

(Em vào trong phần VBA và Macro nhưng không hiểu sao có một messege thông báo không đủ quyền vào đó, do vậy em post vào đây, không hiểu có bị sai luật không? Nếu sai mong các anh chị chuyển về đúng vị trí giúp) Tks.

NHT
 

File đính kèm

  • Generating item for inspec.xls
    36.5 KB · Đọc: 19
Đây là macro của bạn

Mã:
Option Explicit
Sub Filter25()
 Dim eRw As Long, jj As Long
 Dim SoHg As Integer, Col As Byte
 Dim MaHg As String
 Dim Rng As Range, sRng As Range
  
 Col = [iV2].End(xlToLeft).Column
 If Col < 4 Then Col = 4 Else Col = Col + 1
 eRw = [a65500].End(xlUp).Row - 3
 SoHg = eRw \ 25
 If Col > 4 Then
    MaHg = Cells(1, Col - 1).End(xlDown).Value
    Set Rng = Range([A3], [A3].End(xlDown))
    Set sRng = Rng.Find(MaHg, , xlFormulas, xlWhole).Offset(1)
    Cells(2, Col).Resize(SoHg).Value = sRng.Resize(SoHg).Value
 Else
    [d2].Resize(SoHg).Value = [A4].Resize(SoHg).Value
 End If
End Sub

Xem thêm trong file đính kèm
(*) Nếu ngày hôm sau tăng hay giảm đi >25 records thì bên danh sách lọc ra sẽ tăng hay giảm 1 record
(*) Khi hết 25 cột, hiện tại phải xóa bằng tay; Sau này có thể tự động hóa thêm phần này; Nhưng đó lachuyê5n sau này; Còn giờ bạn thử kiểm tra xem & cho biết ý kiến nha.
 

File đính kèm

  • GPE.rar
    10.8 KB · Đọc: 27
Code của bác Sa còn 1 số chỗ cần hoàn thiện 1 chút:
-Nếu khi được vài ngày mà bớt mã dưới số lượng đã kiểm thì code lỗi chứ đúng ra danh sách bằng None.
-Khi tăng, giảm số mã thì số lượng mã cần kiểm mỗi ngày phải đ/c phù hợp với số ngày và số lượng mã còn lại của tháng.
 
Cảm ơn bác SA đã giúp em,em có hai điểm cần hỏi bác giúp thêm

- VD.Em để nguyên code của nó trong sheet1 và khi kích vào nút COUNTING thì kết quả nó sẽ nhảy sang sheet2 tại G2. Nhưng khi kích tiếp để nó nhảy ra ngày khác thì nó không tiếp tục thực hiện (Do em chưa hiểu nhiều về Macro nên mong bác chỉ dạy giúp)
- Khi em xóa dữ liệu của ngày trước, khi kích vào nút counting, nó lại hiện lại từ đầu, có cách nào mà khi xóa dữ liệu của ngày hôm trước đi rồi, nó vẫn nhớ là đã tạo ra các code của ngày hôm trước rồi và chỉ tạo cho ngày hiện tại không bác?

Tks/ NHT
 

File đính kèm

  • ChietTach.zip
    9.5 KB · Đọc: 21
Lần chỉnh sửa cuối:
Có hai điểm cần hỏi bác giúp thêm
(-) VD.Em để nguyên code của nó trong nút COUNTING & kích nó, thì kết quả nó sẽ nhảy sang sheet2 tại G2. Nhưng khi kích tiếp để nó nhảy ra ngày khác thì nó không tiếp tục thực hiện (Do em chưa hiểu nhiều về Macro nên mong bác chỉ dạy giúp)

(-) Khi em xóa dữ liệu của ngày trước, khi kích vào nút counting, nó lại hiện lại từ đầu, có cách nào mà khi xóa dữ liệu của ngày hôm trước đi rồi, nó vẫn nhớ là đã tạo ra các code của ngày hôm trước rồi và chỉ tạo cho ngày hiện tại không bác?

Tks/ NHT
Xét iêu cầu thứ (2) trước: Bạn đừng xóa, để macro xóa, vì:
+ Có vậy nó mới nhớ, nó đã chép từ đâu đến đâu của ngày trước đó (Thật ra là của lần chạy trước đó)
Để thỏa yêu cầu hai mình khuyến cáo quy trình như sau của macro sửa lại:
* Kiểm ngày tại [G1] nếu [G1] + 1 = TODAY() thì tiếp;
* Ghi vô biến, mã hàng cuối đã ghi ngày hôm trước;
* Xóa dữ liệu tại cột 'G' này;
* Ghi ngày hôm nay vô [G1]
* Chép số records vô xuống dưới [G1] như yêu cầu của bài trước

Bạn cho ý kiến về quy trình; nhanh nhứt chiều nay sẽ có kết quả.

Chúc ngày CN vui vẻ!
 
Cảm ơn bạn HYen17. Bạn mô tả đúng ý mình, bạn làm ơn giúp mình với nhé.
 
Macro của bạn đây:

Chú í khi dùng: tên Sheet cần chép đến sẽ phải là "Des", nếu cần đổi lại khác, bạn cứ tự tiện.

Mã:
Option Explicit
[B]Sub CopyRecords()[/B]
 Dim eRw As Long, SoDg As Long
 Dim MaHg As String
 Dim Sh As Worksheet, Rng As Range, sRng As Range
 
 Set Sh = Sheets("Sheet1")
 eRw = Sh.[a65500].End(xlUp).Row
 SoDg = eRw \ 25
 Sheets("Des").Select
 If [g1].Value = "" Or Month([g1]) < Month(Date) Or Year([g1]) < Year(Date) Then
    [G2].Resize(SoDg).Value = Sh.[a4].Resize(SoDg).Value
 ElseIf [g1].Value < Date Then
    MaHg = [g1].End(xlDown).Value
    If MaHg = "" Then Exit Sub
    Range([G2], [G2].End(xlDown)).Clear
    Set Rng = Sh.Range(Sh.[a3], Sh.[a3].End(xlDown))
    Set sRng = Rng.Find(MaHg, , xlFormulas, xlWhole).Offset(1)
    Cells(2, "G").Resize(SoDg).Value = sRng.Resize(SoDg).Value
 End If
 [g1].Value = Date
[B]End Sub[/B]
 
Bác SA_DQ ơi,
Em đề nghị Bác di chuyển topic này qua chổ khác, vì em thấy chổ này không thích hợp cho topic này.

LVD
 
Web KT
Back
Top Bottom