Để đọc hiểu bài viết này, bạn nên truy cập vào đường dẫn bên dưới để xem trước nội dung.

https://github.com/votinhthuong/bulk_users_in_active_directory

Đây là script viết bằng PowerShell tôi tham khảo trên mạng, sau đó edit lại (gần hết) để đáp ứng đúng nhu cầu của bản thân. Độ chính xác của script đã được kiểm chứng trên nhiều lần sử dụng, từ Windows Server 2008 tới 2016.

Câu hỏi đặt ra là, nếu script đã chạy ổn rồi, vậy dữ liệu đầu vào thì sao? Trong thực tế, ta phải tìm cách làm sao đó để lấy được danh sách nhân viên, sau đó tùy biến lại cho hợp lý rồi sử dụng. Nhưng nếu muốn test thử code với dữ liệu đầu vào là hàng trăm, hàng nghìn thì sao?

Ta vẫn phải chuẩn bị được một danh sách người dùng với tên đầy đủ của họ. Nhưng vấn đề về dấu tiếng Việt, các trường thông tin khác trong file CSV,… chẳng lẽ lại ngồi gõ tay?

Có nhiều cách để giải quyết các vấn đề vừa kể trên. Trong bài viết này, tôi chỉ nói qua một số vấn đề tôi gặp phải khi chuẩn bị tập dữ liệu đầu vào.

Vấn đề dấu tiếng Việt

Danh sách tôi nhận được là dạng bảng thô chỉ gồm tên nhân viên và các trường thông tin khác không có nhiều giá trị để sử dụng. Tôi chỉ muốn lấy ra giá trị Họ & Tên của người dùng ở dạng lọc bỏ dấu tiếng Việt. Liệu có cách nào đáp ứng được nhu cầu này không?

Có một cách để xử lý vấn đề này cực kỳ đơn giản, đó là sử dụng chính bộ công cụ gần như bị lãng quên trong Unikey – bộ gõ tiếng Việt phủ sóng 99,9999% các hệ máy tính.

Một lưu ý nhỏ là khi Copy, Cut và Paste trong Excel (hoặc Word), ta nên chọn Paste Special để kết quả trả về đúng nhu cầu.

Paste Special in Excel.jpg

Cụ thể, tôi chỉ muốn lấy ra giá trị text thôi, thì có thể chọn vào Values and number formats.

Paste Special in Excel1.jpg

Quay trở lại vấn đề lọc dấu tiếng Việt, sau khi có được danh sách các cột Họ và Tên như mong muốn, ta quét chọn tất cả các dòng và nhấn Ctrl + C để copy nó vào clipboard của Windows.

Paste Special in Excel2.jpg

Sau đó, tìm tới công cụ gõ tiếng Việt là Unikey, chọn vào menu Công cụ.

Paste Special in Excel3.jpg

Trong cửa sổ UniKey Toolkit, bạn tick vào dòng Loại bỏ dấu và nhấn nút Chuyển mã.

Paste Special in Excel4.jpg

Nếu thấy bảng thông báo như bên dưới, thì quá trình chuyển đã thành công.

Paste Special in Excel5.JPG

Quay trở lại file CSV, chọn Paste Special và chọn theo hướng dẫn bên trên để dán dữ liệu văn bản không dấu tiếng Việt ra.

Paste Special in Excel6.JPG

Vấn đề cắt ghép string

Một điều ta thường thấy trong các tài khoản người dùng đăng nhập máy tính là sẽ theo dạng alias. Ví dụ VÕ TÌNH THƯƠNG thì sẽ set alias là thuongvt. Vậy làm sao để với tập dữ liệu mẫu như trong bài viết này, tôi có thể kết nối tên và các chữ cái đầu của họ và tên đệm của người dùng lại?

Có nhiều cách làm nhưng tôi thường sử dụng nhất là kết hợp thêm một đoạn code Visual Basic ngắn sau đây để tạo ra 1 hàm riêng.

Đầu tiên, vào Excel và chọn menu File -> Options. Trong bảng mới xuất hiện, chọn vào Customize Ribbon bên trái và đánh dấu tick vào Developer bên phải.

Paste Special in Excel7.JPG

Sau đó, quay trở lại file CSV và chọn vào thẻ Developer mới xuất hiện, chọn tiếp Visual Basic hoặc nhấn Alt+F11 để mở.

Paste Special in Excel8.jpg

Trong cửa sổ mới, nhấn Insert -> Module để xuất hiện cửa sổ add code. Nhập vào đoạn code bên dưới và nhấn Save để lưu lại:

Function GetFirstLetters(rng As Range) As String
'Update 20140325
    Dim arr
    Dim As Long
    arr = VBA.Split(rng, " ")
    If IsArray(arr) Then
        For I = LBound(arr) To UBound(arr)
            GetFirstLetters = GetFirstLetters & Left(arr(I), 1)
        Next I
    Else
        GetFirstLetters = Left(arr, 1)
    End If
End Function
Sau đó, gõ function GetFirstLetter() để lấy giá trị đầu vào và biến đổi thành kết quả là các chữ cái đầu tiên trong chuỗi ký tự đó.
Paste Special in Excel10.JPG
Kết quả trả về dạng nguyên mẫu định dạng của ký tự đầu tiên mỗi từ ở dạng viết hoa. Để chuyển thành chữ thường, ta chỉ việc sử dụng thêm một hàm của Excel có sẵn là Lowercase().
Paste Special in Excel11.JPG
Để nối chuỗi được với nhau, sử dụng thêm hàm CONCATENATE() để nối các chuỗi lại với nhau là xong.
Paste Special in Excel12.JPG
Chỉ là một số mẹo nhỏ, nhưng ta đã thấy được sự hữu ích của việc viết code và biết dùng các hàm trong Excel, là có thể tiết kiệm được rất nhiều thời gian.
VÕ TÌNH THƯƠNG
votinhthuong9@gmail.com