CÔNG TY CỔ PHẦN BLUESOFTS

Hàm BS_CALC chạy công thức Excel phía máy chủ và máy khách

 Hàm BS_CALC cho phép lấy kết của công thức chạy trên máy chủ (server) hoặc máy trạm (local), nguồn dữ liệu ở một file, sheet bất kỳ. Đây là một mắt xích quan trọng trong thiết kế chương trình Excel cho nhiều người dùng chung qua mạng LAN, Internet. Dữ liệu tập trung ở một máy chủ. Khai thác sức mạnh máy chủ. Mô hình dữ liệu tập trung, nhiều người cùng khai thác một nguồn dữ liệu. Thực hiện phân tích và lên báo cáo phía máy khách.

Hàm BS_CALC có thử Add-in A-Tools v10.1 ngày 2026-06-08. Chạy cả hai phiên bản PRO và FREE.

Cấu trúc hàm BS_CALC:

BS_CALC(formula, [listSeparator], [workbookName], [sheetName], [options])

+ formula: là chuỗi công thức Excel. Có thể là một hoặc mảng công thức. Ví dụ:
"SUM(IF(B5:B11=""KH001"", C5:C11, 0))"

Nếu đưa vào một mảng công thức kết quả sẽ trả về mảng kết quả của công thức đó. Nếu bạn cần tính một khối lượng lớn công tức phía máy chủ nên đưa vào mảng cong thức để đạt tốc độ nhanh nhất.

+ listSeparator: là ký tự ngăn cách tham số trong công thức mà bạn đã mô tả trong tham số "formula". Ví dụ: ";". Nếu bỏ qua A-Tools coi như bạn dùng ",".

+ workbookName: tên workbook chạy công thức hay chứa dữ liệu nguồn. Ví dụ "Dữ liệu.xlsx". Nếu bỏ qua A-Tools lấy từ workbook đang mở.

+ sheetName: tên sheet chạy công thức hoặc chứa dữ liệu nguồn. Có thể bỏ qua nếu không có yêu cầu đặc biệt. Trong công thức chỉ dùng NAME có phạm vi dùng cả workbook thì tham số này có thể bỏ qua.

+ options: chuỗi khai báo các thuộc tính, có thể bỏ qua nếu dữ liệu lấy từ máy trạm.máy khách. Nếu muốn tính công thức từ máy chủ thì khai báo là: "SVR=YES;".

Ví dụ: chạy công thức tính tổng vùng C5:C11 cho các mã "KH001" ở vùng B5:B11. File nguồn "DATA.xlsx", sheet có dữ liệu "Sheet1". Công thức là:

Nếu không liên quan đến máy chủ - Công thức Excel thông thường tại sheet1 là:
=SUM(IF(B5:B11="KH001", C5:C11, 0)) HOẶC =SUM(IF(Sheet1!B5:B11="KH001", Sheet1!C5:C11, 0))

Nếu nguồn dữ đặt tại máy chủ thì công thức đặt ở file bất kỳ phía máy khách là:

=BS_CALC(
"SUM(IF(B5:B11=""KH001"", C5:C11, 0))",
",",
"DATA.xlsx",
"Sheet1",
"SVR=YES;"
)


Lưu ý:

+ Khi khai báo "SVR=YES;" tức là bạn muốn chạy công thức phía máy chủ, cần đảm bảo:

- Máy chủ phải vào menu "A-Tools" chạy "Tạo máy chủ", mở file "DATA.xlsx" hoặc các file có dữ liệu nguồn để các máy khách khai thác dữ liệu.

- Máy khác - máy chạy công thức bạn phải vào menu "A-Tools" chạy "Kết nối" để máy trạm kết nối đến máy chủ khi đó công thức mới chạy và lấy được kết quả từ máy chủ.

+ Nếu kết quả trả về #N/A lỗi có thể tham số workbookName, sheetName sai tên hoặc tên workbook khai báo chưa mở phía máy chủ (nếu SVR=YES) hoặc phía máy trạm. Lỗi có thể chưa kết nối đến máy chủ nếu trong công thức khai báo "SVR=YES;".

+ Nếu kết quả trả về #VALUE lỗi có thể do cú pháp của công thức hoặc lỗi biểu thức tính toán.

+ Nếu kết quả trả về #NAME lỗi có thể do tên hàm, tên vùng trong công thức sai.

Nội dung sẽ được cập nhật tiếp...