25/05/2018, 23:31

Hướng dẫn cách so sánh thời gian trong Excel bằng lệnh VBA

Chào các bạn, Trong bài học này chúng ta tìm hiểu thêm về VBA trong việc sử dụng VBA để tự động so sánh các giá trị thời gian. Chúng ta tìm hiểu nội dung này thông qua một số ví dụ sau: Yêu cầu 1 : Cho bảng dữ liệu sau, sử dụng nút lệnh để tự động so sánh và tô màu các giá trị ở cột A mà nhỏ ...

Chào các bạn,

Trong bài học này chúng ta tìm hiểu thêm về VBA trong việc sử dụng VBA để tự động so sánh các giá trị thời gian.

Chúng ta tìm hiểu nội dung này thông qua một số ví dụ sau:

Yêu cầu 1: Cho bảng dữ liệu sau, sử dụng nút lệnh để tự động so sánh và tô màu các giá trị ở cột A mà nhỏ hơn giá trị được so sánh ở ô C1

Cách làm:

Trước hết chúng ta cần phân tích được trình tự thực hiện của yêu cầu như sau:

  • So sánh từng giá trị ở vùng A2:A9 với ô C1
  • Nếu giá trị nào ở vùng A2:A9 mà nhỏ hơn giá trị ở C1 => Tô màu (ví dụ là màu đỏ)
  • Nếu giá trị nào ở vùng A2:A9 mà lớn hơn giá trị ở C1 => Không làm gì, bỏ qua

Trình tự này thực hiện trong VBA như sau:

  • Tạo vòng lặp cho vùng A2 đến A9
  • Mỗi lần lặp sẽ so sánh từng giá trị từ A2 đến A9 (tổng cộng có 8 lần lặp) với C1
  • Tô màu giá trị thỏa mãn điều kiện
  • Kết thúc vòng lặp
  • Gán Macro vào nút lệnh

Chúng ta thực hiện từng bước như sau:

Bước 1: Mở cửa sổ VBA, tạo 1 Module

Click chuột phải vào cửa sổ Project > Chọn Insert > Module

Trong Module này chúng ta tạo 1 sub có tên là So_Sanh_Ngay

Bước 2: Thực hiện viết Code vòng lặp

Trong Sub So_Sanh_Ngay chúng ta viết các nội dung sau:

Gán 1 biến bất kỳ, ví dụ là chữ i (gọi là biến i), biến này sẽ sử dụng các giá trị là số tự nhiên

Dim i as Integer

Đưa biến i vào vòng lặp như sau:

For i = 2 to 9

Next i

Biến i chạy từ 2 đến 9, tương ứng với số dòng ở vùng A2:A9

Bước 3: Thực hiện so sánh các giá trị trong vòng lặp

Trong vòng lặp, chúng ta viết code so sánh như sau:

If Cells(i, 1).value < Cells(1, 3).value then

Cells(i, 1).Font.Color = vbRed

End if

Câu lệnh trên được hiểu là: Nếu giá trị ở cột A, dòng i nhỏ hơn giá trị ở ô C1 (dòng 1, cột 3) thì ô ở cột A, dòng i đó sẽ được tô màu đỏ

Toàn bộ Macro như sau:

Bước 4: gán Macro vào nút lệnh

Click chuột phải vào nút lệnh, chọn Assign Macro

Chọn Macro So_Sanh_Ngay để gán vào nút lệnh

Bây giờ chúng ta click vào nút lệnh và xem kết quả nhé:

0