Xin giúp đỡ: Đếm lần mua hàng thứ mấy của khách, in "lần thứ xxx" ra Phiếu giao hàng (1 người xem)

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

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

lamcam

Thành viên mới
Tham gia
12/9/06
Bài viết
26
Được thích
4
Chào các bác
Em cực gà về Excel, may sưu tầm được 1 file Nhập _ Xuất _ Tồn của các bác để áp dụng in hóa đơn, quản lý khách hàng.
Hiện nay trong fie này, em muốn thêm 1 cột để đếm xem khách hàng lấy hàng lần này là lần thứ mấy từ đầu kỳ, nhưng loay hoay mãi mà vẫn bị ngược, và chưa biết cách xuất số đó ra Phiếu Giao Hàng
(Em định đếm ở cột I, sheet Phát sinh, nhưng mà chỉ đếm ngược được thôi - Tại ô I11, đáng lẽ là lần lấy hàng thứ 1 trong tổng số 10 lần lấy hàng thì nó lại chỉ ghi số 10).
Rất mong nhận được sự giúp đỡ của các bác ạ.
Em xin chân thành cảm ơn.
 
Bạn xem cách mà mình xài UDF
 

File đính kèm

Cảm ơn bác ChanhTQ@.
Thật tuyệt vì không ngờ lại nhanh và nhẹ nhàng như vậy.
Bác có thể hướng dẫn cụ thể các làm cái UDF đó để mình và anh chị em học hỏi được không ạ? Để còn làm những thông số tương tự, hoặc chuyển thông số đó vào các sheet khác ạ.
Xin cảm ơn và chúc bác cùng anh chị em GE một kỳ nghỉ cuối tuần nối tiếp nghỉ lễ thật vui vẻ.
 
Mình diễn dịch sang tiếng Việt cho bạn nghen:

PHP:
Option Explicit
Function SoLanMua(MaKH As String, SHD As Integer) As Integer
 Dim Sh As Worksheet, Rng As Range, sRng As Range, Rg0 As Range, Cls As Range
 Dim Rws As Long
 
1 Set Sh = ThisWorkbook.Worksheets("PhatSinh")
 Set Rng = Sh.Range(Sh.[l10], Sh.[L65500].End(xlUp))
3 Rws = Rng.Rows.Count
 Set sRng = Rng.Find(MaKH, , xlFormulas, xlWhole)
5 If Not sRng Is Nothing Then
    Set Rg0 = sRng.Resize(Rws)
7    For Each Cls In Rg0
        If Cls.Value = MaKH Then
9            With Cls.Offset(, -1)
                If IsNumeric(.Value) Then
11                    SoLanMua = 1 + SoLanMua
                    If .Value = SHD Then Exit Function
13                End If
            End With
15        End If
        If Cls.Value = "" Then Exit For
17    Next Cls
 End If
End Function

Hai dòng lệnh trên D1: Khai báo các biến cần dùng;
D1: Đem đối tượng là trang tính "Phat Sinh' gán vô biến đã khai báo;
D2: Đem vùng có dữ liệu của cột [L] của trang tính này gán vô biến đối tượng đã khai báo;
D3: Đếm số hàng của biến vùng & đem gán vô biến khai báo;
D4: Thực hiện fương thức FIND() với tham biến đã cung cấp cho hàm (MaKH);
D5: Nếu công việc tìm kiếm (Find()) có kết quả thì tưực hiện các lệnh sau, cho tới D18;
D6: Lấy vùng ô kế từ ô tìm thấy (của D5) fát triển xuống dưới bằng với số dòng trong biến Rws đem gán vô biến Rg0 đã khai
D7: Thiết lập vòng lặp duyệt tất thẩy các ô trong vùng biến đối tượng này; Vòng lặp kết thúc tại D17
D8: Điều kiện: Nếu ô đang duyệt có trị trùng với tham biến mà ta cung cấp thì thực hiện các lệnh kế tiếp cho đến D15
D9: Tuyên bố sẽ làm việc với ô bên trái liền kề với ô đang duyệt; Tuyên bố này chấm dứt tại D14
D10: Điều kiện, nếu ô đó là số trị thì thực hiện các lệnh trước D13;
D11: Cộng 1 đơn vị cho hàm SoLanMua (số lần mua)
D12: Nếu trị của nó bằng với trị của tham số (SHD) mà ta cung cấp từ đầu thì iêu cầu thoát ngay hàm;
D16: Nếu ô đang duyệt không chứa trị (ô rỗng) thì thoát khỏi vòng lặp.
Đây là việc fòng ngừa quá đán mà thôi!

Sau khi đọc lời Việt xong rồi bạn có thể hỏi tiếp, nếu cần.

(húc vui vẻ!
 
Cảm ơn HYen17 nhiều nhé. Không ngờ để có được 1 lệnh cho người sử dụng thuận tiện nhanh, lại phải viết 1 lệnh dài thế.
Chúc cuối tuần vui vẻ ạ.
 
Web KT

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

Back
Top Bottom