CÔNG TY CỔ PHẦN BLUESOFTS

Hướng dẫn tạo báo cáo phân nhóm GROUP có nhiều cấp trong Excel và A-Tools linh động hơn Subtotal Bài 1


Hướng dẫn cách làm báo cáo trên Excel vừa chi tiết vừa GỘP NHÓM giống Subtotal nhưng RẤT ĐỘNG và NHIỀU CẤP.. Đây là phương pháp dùng hàm BS_SQL với các từ khóa hỗ trợ GROUP, FOOTER. Khi báo cáo phân nhóm được tạo ta sẽ thấy dữ liệu được chia theo nhóm với các cấp độ - level.
 
Phương pháp tạo báo cáo nhóm
Nhóm dữ liệu theo THANG (1), MA_KH(2)
Chỉ cần thêm khai báo GROUP vào tham số OPTIONS của hàm BS_SQL
GROUP(1,2)
 
Chỉ định vị trí các cột cần tính tổng
FOOTER(3,4,5,6)
 
Tức là các cột có vị trí trong báo cáo là: 3,4,5,6 sẽ đc tính tổng
 
Trong khai báo SQL chú ý biến hệ thống ở cột "Luy_ke"
Có biến LASTVALUE dùng để láy giá trị cột hiện thời liên trước
 
Cách định dạng
Theo ngầm định hàm BS_SQL sẽ lấy dòng cuối cùng của báo cáo cách một dòng trống
để lấy định dạng cho các dòng footer
 
SQL: SELECT recno() as stt,month(ngay_ct) as thang, ma_kh, slg,thanh_tien as tien_hang, thanh_tien*0.1 AS thue,data(row,4)+data(row,5) as thanh_tien,
data(row-1,7)+data(row,6) as [Lũy kế nhóm]
LASTVALUE+data(row,6) as [Lũy kế chung]
FROM data WHERE ngay_ct>=cell(e2) and ngay_ct<=cell(f2) and loai_phieu='X' and ma_kh<>''
 
OPTIONS: INSERT=YES; GROUP(1,2); FOOTER(3,4,5,6)

CÔNG THỨC: =BS_SQL(B3 & LEFT(E2&F2,0),B4)
 

* Một số chú ý khi lập báo cáo phân nhóm trên A-Tools:
 
* Chỉ nên sử dụng các hàm của A-Tools đề xuất:
- Các hàm thống kê:
SUM, COUNT, COUNTA, MIN, MAX, AVG (AVERAGE)
 
- Hàm định dạng:
TEXT(giá trị, 'mẫu định dạng')
TEXT(1000000, '#,##0') => 1,000,000
 
- Hàm logic và lấy dữ liệu trong mảng:
DATA(row, col): lấy giá trị trong mảng theo tọa độ
IIF(logic, TrueValue, FalseValue)
 
+ Khi xây dựng công thức với hàm A-Tools, hàm CSDL dùng hàm này
Không dùng hàm IF của Excel nếu không "bắt buộc"
+ Khi dùng hàm Excel, VBA:
 
- Bạn vẫn được phép dùng các hàm của Excel và các hàm tạo trong VBA: Khi đó hãy dùng hàm IF thay cho IIF - ĐÓ là Excel
 
- Biểu thức trình bày ở FOOTER
Chuỗi bất kỳ [công thức, hàm để trong ngoặc vuông]
Chuỗi bất kỳ [SUM(<TÊN CỘT HOẶC VỊ TRÍ>)]
 
* Ví dụ:
Cột 3 hiển thị nội dung "Tổng doanh thu là: 20,000,000"
FOOTER(3=Tổng doanh thu là: TEXT(SUM(<thanh_tien>) , '#,##0')
 
Video hướng dẫn chi tiết: