SQL FOR VBA WITH SQL_SELECT...COUNT/SUM/AVG... GROUP BY...

Nội dung được viết bởi Nguyen thi huyen trang

Xem tài liệu đính kèm VBA for SQL references hoặc VBA for connection with SQL

SELECT COUNT([tên cột]) 
hoặc SUM([tên cột]) hoặc AVG([tên cột]) AS [tên cột mới] 
FROM [tên bảng tính ] 
WHERE [điều kiện] GROUP BY [tên cột]

Câu lệnh này nghĩa là đếm các bản ghi từ một bảng tính hoặc tính tổng hoặc tính giá trị trung bình với 1 theo điều kiện nào đó hoặc là nhóm lại theo một đối tượng nhất định

LƯU Ý QUAN TRỌNG: KHI BẠN MUỐN LẤY RA CÁC CỘT THÔNG TIN NÀO ĐÓ THÌ GROUP BY CŨNG PHẢI LẤY RA TƯƠNG ỨNG CÁC TRƯỜNG ĐÓ. VÍ DỤ BÊN DƯỚI CHO THẤY NẾU BẠN MUỐN LẤY RA TRƯỜNG MÃ HÀNG VÀ TÊN HÀNG THÌ GROUP BY CŨNG PHẢI LẤY RA CỘT MÃ HÀNG VÀ TÊN HÀNG

Mời các bạn xem video thể hiện kết quả với SQL nhé

Bước 1: Đặt tên cho các bảng tính trong từng sheets phía dưới và tên các trường dữ liệu

SQL FOR VBA WITH SQL_SELECT...COUNT/SUM/AVG... GROUP BY...

Bước 2: Viết câu lệnh SQL theo cú pháp Select… Count [tên cột]

SELECT [State/Province], COUNT([State/Province]) AS [NUMERS OF PROVINCE] FROM [Customers] GROUP BY [State/Province]

TỪ KHÓA SELECT: Chọn các trường  [State/Province] và trường thứ  2 [Numbers of Province] (trường này do người sử dụng tự đặt tên và sẽ dùng bằng từ khóa AS)

TỪ KHÓA COUNT([State/Province]): đếm số lượng các tỉnh (các bang) trong bảng Danh Sách khách hàng (TỪ KHÓA FROM)

TỪ KHÓA GROUP BY: Nhóm theo đối tượng cụ thể là các tỉnh [State/Province]

Bước 3: Thực hiện câu lệnh SQL và kết quả sẽ thể hiện như sau

SQL FOR VBA WITH SQL_SELECT...COUNT/SUM/AVG... GROUP BY...

Tương tự như vậy ta có thể sử dụng với hàm SUM và hàm AVRAGE để tính ra tổng và giá trị trung bình của các yếu tố

Ví dụ sau đây sẽ: Hiện lên thông tin các trường Mã hàng, Tên Hàng, và tính tổng theo nhóm Mã hàng và tên hàng chỉ đối với điều kiện là những mặt hàng có tên là ‘Mắm cá’. (CÂU LỆNH SQL NÀY (SUM[TÊN CỘT]…. GROUP BY [TÊN CỘT]) TƯƠNG ĐƯƠNG VỚI CÂU LỆNH SUMIF TRONG EXCEL THUẦN TÚY)

SELECT [MA_HH] AS [Mã hàng], [HangHoa].[TEN_HH] AS [Tên Hàng], SUM([SO_TIEN]) AS [Tổng tiền] FROM [HangHoa] WHERE [HangHoa].[TEN_HH] LIKE '%Mắm cá%'  GROUP BY [MA_HH], [TEN_HH]

Nếu như dùng với SUMIF bạn sẽ phải làm 2 bước là nhóm lại mã hàng sang vùng khác (ví dụ bằng Remove duplication) rồi bạn đặt công thức Sumif để tính theo điều kiện Mã Hàng. 

Nếu bạn muốn lấy thêm trường thông tin Tên hàng từ Mã hàng, bạn lại phải sử dụng thêm hàm vlookup để hiện tên hàng; 

Thì giờ đây với 1 câu lệnh SQL như trên bạn muốn lấy ra bao nhiêu trường thông tin, nhóm bao  nhiêu hàng và đặt điều kiện với một loại hàng cụ thể (ví dụ trường hợp này là chỉ lấy ra mặt hàng bắt đầu bằng chữ “Mắm cá”) thì SQL sẽ hiện ra kết quả rất nhanh chóng chỉ với một thao tác ấn Enter là xong.  ?

SQL FOR VBA WITH SQL_SELECT...COUNT/SUM/AVG... GROUP BY...

Mình sẽ sử dụng thêm một ví dụ ứng dụng trong việc tính giá bình quân và số lượng trung bình theo từng lần nhập với 1 điều kiện mặt hàng nhất định

SELECT [MA_HH] AS [Mã hàng], [HangHoa].[TEN_HH] AS [Tên Hàng], AVG([SO_LUONG]) AS [Số lượng bình quân], SUM([SO_TIEN])/SUM([SO_LUONG]) AS [Đơn giá bình quân] FROM [HangHoa] WHERE [HangHoa].[SO_LUONG]>0 GROUP BY [MA_HH], [TEN_HH]

Kết quả sẽ hiện ra rất nhanh chóng cho tất cả các mặt hàng. Mình sẽ đối chiếu với 1 ví dụ về Mặt hàng ‘Bánh chưng’ (Mã VT0001) để so sánh kết quả của SQL nhé.

SQL FOR VBA WITH SQL_SELECT...COUNT/SUM/AVG... GROUP BY...

CẢM ƠN CÁC BẠN ĐÃ THEO DÕI

 

 

Nếu công việc của bạn liên quan nhiều đến quản lý, phân tích dữ liệu và làm báo cáo trên bảng tính thì giỏi Excel thôi chưa đủ. Nếu chỉ dùng Excel, bạn sẽ thường xuyên phải OT đến mỗi kỳ làm báo cáo, stress vì sai dữ liệu do nhập thủ công, hay gặp vấn đề các hàm load chậm do dữ liệu quá nặng,...

Có lẽ bạn đã từng nghe ở đâu đó về công cụ lập trình VBA trên Excel, giúp bạn tiết kiệm tối đa thời gian làm việc nhờ làm báo cáo tự động, phân tích và xử lý số liệu chính xác tuyệt đối, đặc biệt công cần lọ mọ sửa thủ công,...

Nhưng bạn không dám nghĩ một ngày nào đó mình sẽ dùng VBA bởi vì mình không biết lập trình, sửa code và gỡ lỗi mã. Tin mình đi, bạn hoàn toàn có thể thành thạo công cụ này ngay cả khi không giỏi Excel, không biết lập trình với khóa học VBAG01: Tuyệt đỉnh VBA - Tự động hóa Excel với lập trình VBA tại Gitiho.

Tất tần tật những kiến thức từ cơ bản đến nâng cao về cách sử dụng VBA trong Excel sẽ được đề cập khiến mọi thao tác thủ công trên Excel gần như được loại bỏ hoàn toàn. 

Hãy nhấn vào Học thử hoặc Đăng ký ngay để cảm nhận sự “vi diệu” mà VBA mang lại cho công việc của bạn nhé!

0/5 - (0 bình chọn)

0/5 - (0 bình chọn)

0 thảo luận

@ 2020 - Bản quyền của Công ty cổ phần công nghệ giáo dục Gitiho Việt Nam
Giấy chứng nhận Đăng ký doanh nghiệp số: 0109077145, cấp bởi Sở kế hoạch và đầu tư TP. Hà Nội
Giấy phép mạng xã hội số: 588, cấp bởi Bộ thông tin và truyền thông