Đặt mã nhân viên theo chức danh và cửa hàng.

Liên hệ QC
Thưa các anh chị trong diễn đàn

Em có file excel cần anh chị giúp viết hộ em công thức tạo mã công đoạn ( em không biết dùng VBA nên mong anh chị không viết macro ạ)
Trong file em có ví dụ ( điền tay thủ công) điều em mong muốn
1. cùng một khu vực nếu tất cả các trường đều giữ nguyên thì số thứ tự nhảy
2. cùng một khu vực mà một trong số các trường thay đổi thì trở về 1
và cứ thế cứ thế.

mong các anh chị giúp đở ạ

em cảm ơn nhiều
 

File đính kèm

  • MÃ CÔNG ĐOẠN.xlsx
    15.1 KB · Đọc: 6
Lần chỉnh sửa cuối:
Bạn "đổ" dữ liệu của bạn vô cột [B:C] của trang & chạy như theo hướng dẫn trong file.
Chúc mừng năm mới bác SA_DQ ạ. Em đã tải file của bác & đã mở VBA để vào xem code của bác nhưng chưa hiểu nguyên lý hoạt động của code. Vậy mong bác cho em xin vài dòng diễn dải để em học tập được không ạ?
 
Trước tiên mình xin dịch sang tiếng Việt các dòng lệnh trong macro này:

PHP:
Sub TaoMa5()
 Dim Rng As Range, Arr()
 Dim J&, Rws&, ViTri As Byte
 Dim Ho$, Ten$, HoDem$
 On Error Resume Next
 
1 Sheets("Ch08").Select
 Rws = [b2].CurrentRegion.Rows.Count
3 Arr() = [b2].Resize(Rws, 2).Value
 ReDim dArr(1 To Rws, 1 To 1)
5 [d1].Value = "Mã NV"
 For J = 1 To UBound(Arr())
7    Ho = Left(Trim$(Arr(J, 1)), 1)
    If Ho = "" Then Exit For
9    dArr(J, 1) = LoaiDauTV(Ho)
    HoDem = LTrim$(Arr(J, 1))
11    If InStr(HoDem, " ") < 1 Then
        dArr(J, 1) = dArr(J, 1) & "J"
13    Else
        dArr(J, 1) = dArr(J, 1) & LoaiDauTV(Left(TachTen(HoDem), 1))
15    End If
    Ten = Left(LTrim$(Arr(J, 2)), 1)
17    dArr(J, 1) = dArr(J, 1) & LoaiDauTV(Ten) & "00"
 Next J
19 [d2].Resize(J).Value = dArr()
 gpeTM
End Sub

3 dòng lệnh đầu là khai báo các tham biến sẽ xài trong chương trình;
D1: Kích hoạt trang tính cần thiết;
D2: Xác định số dòng chứa dữ liệu (DL) cho vô tham biến;
D3: Đưa vùng DL gồm 2 cột vô biến mảng (để xử lý)
D4: Khai báo thêm 1 biến mảng để chứa kết quả xử lý;
D5: Nhập 1 chuỗi lên ô địa chỉ;
D6: Thiết lập vòng lặp duyện toàn bộ DL có (nhập) trong mảng
Vòng lặp kết thúc ở D18
D7: (Trong quá trình duyệt vòng lặp) ta lấy cột đầu của mảng, loại các khoảng trắng (ngừa nhập sai chính tả) & gán vô tham biến có tên là 'Ho'
D8: Điều kiện (ĐK) nếu gặp khoảng trắng (của dòng đang duyệt) thì thoát chương trình;
D9: Cung cấp tham biến 'Ho' này cho hàm LoaiDauTV (loại dấu tiếng Việt) & kết quả trả về của hàm này được cho vô mảng kết quả (có dòng trùng với dòng đang duyệt mảng DL & cột 1)
D10: Xin xem lại D7 để hiểu;
D11: ĐK nếu DL trong tham biến cuối này không có/còn khoảng trắng thì thêm ký tự 'J' (D12);
ĐK này kết thúc ở D15
D13: Bằng ngược lại thì (D14) Tham biến trong mảng kết quả sẽ Nối thêm 1 ký tự, mà nó được xử lý qua 2 công đoạn:
.a./ Cung cấp cho hàm TachTen tham biến cuối, để nhận được kết quả trả về của hàm này
b./ Cắt lấy ký tự đầu (được trả về từ hàm (a./)) đưa đi loại bỏ dấu tiếng Việt (Xem lại D9) & ấn nối tiếp vô mảng kết quả;
D16: Lấy ký tự đầu của cột thứ 2 (thuộc dòng đang khảo sát) ấn vô tham biến 'Ten'
D17: (Tiếp theo D16) là đưa nó đi loại dấu tiếng Việt & nối vô chuỗi kết quả cùng với 2 kí số '00'
D19: Trãi mãng kết quả lên trang tính (bắt đầu từ cột 'D' dòng thứ 2 trỡ đi;
D20: Gọi macro gpeTM xử lý tiếp

Mong sẽ hữu ích cho bạn xíu nào đó.
 
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom