• Thứ Sáu, 14/07/2006 09:27 (GMT+7)

    Tính điểm bằng Excel

    Câu hỏi :
    1. Có hàm Excel nào đếm được số lượng trong bảng tính theo nhiều điều kiện, ví dụ: cần đếm số học sinh nữ và dân tộc K'Ho có điểm trung bình từ 5 đến 6. Trong bảng tính đã có các cột Stt: Họ tên học sinh; dân tộc; giới tính; d1, d2, ĐTB.
    2. Tạo macro hay cái gì khác để giấu công thức trong Excel không cho người khác nhìn thấy và sửa chữa nó.
    3. Tạo một button khi nhấn vào nó sẽ mở ra một sheet (Sheet đó đã bị giấu, bình thường thì không thấy), hoặc vô hiệu sheet đó.


    Trả lời :
    1. Excel có cung cấp hàm tên là CountIf() để đếm số lượng cell thỏa mãn 1 điều kiện nào đó, tuy nhiên khả năng của hàm này không đủ sức giải quyết vấn đề bạn đặt ra. Cách khắc phục là định nghĩa 1 hàm user-defined bằng VBA thực hiện chức năng mà bạn muốn. Cụ thể bạn hãy tiến hành các thao tác sau:

    - chạy Excel, mở file Excel chứa danh sách học sinh (gồm nhiều hàng, mỗi hàng 7 cột thông tin của từng học sinh như bạn trình bày). Giả sử danh sách được nhập từ cell đầu tiên là A1 của bảng tính.
    - vào menu Tools.Macro.Visual Basic Editor để mở cửa sổ soạn code VBA. Ấn phải chuột trong cửa sổ Project, chọn menu Insert.Module để tạo ra Module VBA mới (tên mặc định là Module1) rồi nhập hàm đếm số record thỏa mãn yêu cầu của bạn như sau:

    'hàm có 4 tham số theo yêu cầu của bạn
    Function MyCount(rng As Range, dantoc As String, gioitinh As String, tbmin As Double, tbmax As Double) As Integer
    'Khai báo các biến cần dùng
    Dim count As Integer
    Dim i As Integer
    Dim tdb As Double
      'khởi động số lượng ban đầu
       count = 0
       'duyệt xử lý từng học sinh trong danh sách
       For i = 1 To rng.count
        'xác định điểm TB của học sinh từ cell tương ứng
        dtb = CDbl(rng.Item(i, 7))
        'kiểm tra các điều kiện cần thỏa mãn
        If (dantoc = rng.Item(i, 3).Value) And (gioitinh = rng.Item(i, 4).Value) And (tbmin <= dtb) And (dtb <= tbmax) Then
          'tìm thỏa thì tăng số lượng đếm
          count = count + 1
        End If
        'trả về số lượng đếm được
        MyCount = count
       Next i
    End Function
    - quay về bảng tính Excel ban đầu, dời chuột về 1 cell nào đó mà bạn muốn chứa số lượng học sinh thỏa mãn điều kiện rồi nhập thử công thức sau:
    =MyCount(A1:G100,"K'No","Nu", 5.0, 6.0)
    Tóm lại nhờ hàm MyCount() ở trên, bạn có thể đếm số lượng học sinh thỏa mãn điều kiện tổng quát hơn: các học sinh thuộc 1 dân tộc nào đó; thuộc phái nào đó và có điểm TB nằm trong phạm vi nào đó.

    2. và 3. Việc giấu công thức hay worksheet nào đó thuộc bài toán tổng quát hơn nhiều, đó là bài toán an toàn thông tin. Có 3 vấn đề lớn trong an toàn thông tin, đó là bảo mật, toàn vẹn & nhất quán dữ liệu, sẵn sàng đáp ứng. Trong 3 vấn đề trên, vấn đề bảo mật thường được người dùng quan tâm nhất. Thí dụ thông tin của bạn là file Excel chứa các bảng dữ liệu cùng các module source code xử lý, bạn muốn chỉ có những người dùng nhất định mới được truy xuất file Excel, mỗi người có 1 số quyền truy xuất riêng biệt... Cách chính qui nhất để bảo mật thông tin là hãy để hệ điều hành giải quyết, ứng dụng không nên giải quyết thêm. Hiện WinXP đã giải quyết tốt vấn đề bảo mật thông tin thông qua cơ chế xác nhận người dùng nhờ thông tin account tương ứng, ai có account nào thì được quyền truy xuất các tài nguyên qui định bởi account đó, ai không có account thì không thể vào được WinXP và như thế không thể chạy Excel để truy xuất các file Excel được.
    Chuyên mục: Ứng dụng văn phòng