• Thứ Hai, 19/06/2006 09:19 (GMT+7)

    Macro giải bài toán lỗi công việc

    Câu hỏi :
    Bảng tính Excel có 1000 dòng thống kê về số lần lỗi của nhiều thiết bị, trong đó mỗi thiết bị chiếm 10 dòng (thống kê trong 10 giờ), ví dụ:

    Loại thiết bị Giờ Số lần lỗi
    A1 2 10
    A2 3 8
    B1 2 2
    B2 3 7
    A1 3 15
    A2 4 7
    B1 5 6
    B2 6 2

    Xin hướng dẫn viết macro tìm giờ có số lỗi cao nhất và in ra 1 sheet (của tất cả các thiết bị).


    Trả lời :
    Bài toán của bạn thật ra chưa cần phải viết macro vì Excel đã cung cấp sẵn chức năng để giải quyết trực tiếp. Thí dụ bảng thống kê của bạn được chứa trong 1000 dòng và dùng 3 cột A, B, C nằm ngay dưới dòng tiêu đề, bạn hãy thực hiện các thao tác sau để thực hiện yêu cầu của mình: chọn vùng gồm 1000 dòng dữ liệu trong 3 cột, chọn menu Data.Sort, khi cửa sổ Sort hiển thị, bạn chọn cột 'Loại thiết bị' trong listbox 'Sort by' với tiêu chuẩn 'Ascending', chọn cột 'Số lần lỗi' trong listbox 'Then by' kế tiếp với tiêu chuẩn 'Descending' rồi nhấn button Ok, vùng chọn sẽ được sắp xếp lại theo thứ tự tăng dần dữ liệu trong cột 'Loại thiết bị', các dòng dữ liệu của 1 thiết bị sẽ được để liên tiếp nhau, trong đó dòng đầu tiên của từng thiết bị sẽ miêu tả số lần lỗi max của thiết bị đó cùng giờ xuất hiện lỗi tương ứng:

    Loại thiết bị Giờ Số lần lỗi
    A1 3 15
    A1 2 10
    A2 3 8
    A2 4 7
    B1 5 6
    B1 2 2
    B2 3 7
    B2 6 2

    Nếu bạn dùng chức năng 'Record New Macro' để ghi nhận lại các thao tác trên thì macro được tạo ra tương ứng sẽ như sau:

    Sub SortErrorMax()
       'chọn vùng dữ liệu cần sắp xếp
        Range('A2:C1001').Select
        'thực hiện sắp xếp theo tiêu chuẩn mong muốn
        Selection.Sort Key1:=Range('A2'), Order1:=xlAscending, Key2:=Range('C2'), Order2:=xlDescending, Header:=xlGuess, OrderCustom:=1, MatchCase:= False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 :=xlSortNormal
    End Sub

    Lưu ý nếu muốn giữ lại bản dữ liệu nguyên thủy, bạn nên copy nó rồi dán thành 1 bản khác (tốt nhất là trên 1 Sheet khác) rồi thực hiện các thao tác trên bản copy.
    Chuyên mục: Ứng dụng văn phòng