Hướng dẫn hàm next trong excel

Vòng lặp trong Excel là quá trình lặp lại 1 đoạn mã theo một số lần nhất định trong VBA. Việc này rất có lợi trong những việc đòi hỏi nhiều thao tác thủ công lặp đi lặp lại (ví dụ như in ấn hàng loạt Phiếu thu, chi dựa trên 1 mẫu phiếu duy nhất). Việc tìm hiểu về vòng lặp là một yêu cầu cơ bản nhất cho những bạn bắt đầu với việc học cách sử dụng VBA trong Excel, vì mục tiêu của chúng ta luôn là “Giảm thao tác tay, tăng tính tự động nhằm tiết kiệm thời gian xử lý công việc”.

Có 2 loại vòng lặp thường sử dụng là For-Next Loop và Do-Loop. Sau đây chúng ta cùng tìm hiểu về cách sử dụng vòng lặp For-next.

Ví dụ 1: Vòng lặp đơn

Gán biến i với các giá trị từ 1 đến 10

Với mỗi giá trị i thì giá trị tại các ô ở cột A, dòng i sẽ có giá trị bằng i

* Lưu ý:

  • Việc sử dụng vòng lặp sẽ có lợi ở trên phạm vi nhỏ, những công việc gần như bắt buộc phải thực hiện bằng tay
  • Với những bảng dữ liệu lớn thì cách sử dụng vòng lặp sẽ làm chậm hơn, khi đó nên cân nhắc chọn cách làm khác

Ví dụ 2: Vòng lặp kép

Đôi khi chúng ta cần thực hiện nhiều vòng lặp lồng nhau trong cùng 1 câu lệnh VBA, khi đó chúng ta cần sử dụng vòng lặp kép.

Cách sử dụng vòng lặp kép khá đơn giản và dễ thực hiện. Chúng ta cùng tìm hiểu ví dụ sau:

Vòng lặp kép 2 vòng lồng nhau

Biến i là thể hiện số cột được lặp trong bảng

Biến j là thể hiện số dòng được lặp trong bảng

=> Kết hợp vòng lặp cho 2 biến i và j để có thể mở rộng phạm vi vòng lặp sang các cột tiếp theo

Vòng lặp kép 3 vòng lồng nhau

Tương tự với vòng lặp 2 vòng, chúng ta có thể tạo ra vòng lặp kép 3 vòng với việc xét đồng thời 1 yếu tố nữa về Sheet để có thể mở rộng phạm vi hoạt động cho nhiều sheet cùng lúc

Tùy theo nhu cầu công việc chúng ta có thể tùy biến vòng lặp để đưa ra được kết quả mong muốn.

Việc xử lý dữ liệu trên Excel đôi khi mất nhiều thời gian và công sức khi các dữ liệu có tính lặp đi lặp lại. VBA khắc phục được điểm này. Khi sử dụng VBA trong công việc, bạn có thể rút ngắn thời gian làm việc rất nhiều, có thể từ 01 ngày (nếu xử lý trên Excel) còn 01h (khi xử lý trên VBA). Ngoài ra, VBA còn giúp lập báo cáo tự động và điều khiển các chương trình khác như Word, Power Point, Outlook … giúp biến file Excel của bạn trở thành 1 phần mềm chuyên nghiệp …

Để có thể học VBA một cách đầy đủ, có hệ thống, bạn hãy tham gia khoá học VBA101 – VBA cơ bản dành cho người mới bắt đầu của hệ thống Học Excel Online. Hiện nay hệ thống đang có nhiều ưu đãi khi bạn đăng ký khóa học này. Chi tiết xem tại:

Tác giả: duongquan211287

· · ·

Nhân có người bạn hỏi về For . . . next, nay mình xin đóng góp những gì mình biết để các bạn chưa biết xem qua.
Trong các ngôn ngữ lập trình mình biết: VBA, VB6, FoxPro, Pascal đều có các cấu trúc vòng lặp. Vòng lặp là 1 cấu trúc chương trình cho phép 1 câu lệnh hoặc 1 nhóm câu lệnh thực hiện 1 số lần có giới hạn. Giới hạn này có thể biết trước và có thể không, nhưng phải có để máy tính ngừng lại khi đủ số lần lặp ấn định trước. Giới hạn này có thể xác định bằng 1 con số cụ thể, 1 con số là kết quả của 1 phép tính, và cũng có thể là 1 điều kiện thoát ra khỏi vòng lặp.
Vòng lặp for là đơn giản và dễ sử dụng hơn so với while do vì nó giới hạn cụ thể số vòng lặp.
Thí dụ: for i = 1 to 10, for i = 1 to len(chuoiA), for i = 0 to k*2 . . .
Như vậy, dòng lệnh nào đặt giữa For và Next sẽ thực hiện n lần, kết quả của dòng lệnh đó sẽ bị thay đổi n lần. Kết quả sau lần thực hiện thứ n mới được dùng cho các dòng lệnh sau cấu trúc For này hoặc là kết quả cuối cùng.
Ta có nhận xét rằng sau 1 vòng, biến i tăng lên 1 cho đến khi bằng số lần quy định.
Vậy vấn đề căn bản của chúng ta là gì?

1. Xác định rằng bài toán phải thực hiện nhiều lần 1 phép tính mới ra kết quả.
2. Xác định số lần tính đó.
3. xác định câu lệnh nào để thực hiện sự tính toán.

THí dụ đơn giản nhất: tính giai thừa của 6:
ta biết n! = 1 x 2 x 3 x.... x n.

1. vậy là thích hợp để dùng For.
2. xác định số lần tính: ta thấy 6! có 5 bài toán nhân. Ta chọn số vòng lặp là n. ta viết for i =1 to 5
3. xác định câu lệnh thực hiện nhân:
a. Phải đặt 1 biến là kq
b. giá trị của kq là giá trị của kết quả trước đó nhân với giá trị hiện tại của i vì i tăng lên sau mỗi vòng lặp, ta lấy luôn i làm thừa số cho phép nhân.
Vậy ta có câu lệnh: kq = kq * i
Đến đây ta phải giả định rằng khi chạy vòng đầu tiên, có trục trặc gì không. Có. Có ở chỗ chưa có giá trị ban đầu của kq nên không nhân đưộc. vậy ta gán giá trị ban đầu của kq là 1:
ta viết kq = 1 ở bên trên For
Thứ hai ta giả định rằng sau 5 vòng lặp giá trị của kq là như thế nào. ta được kq = 1 * 1 * 2 * 3 * 4 * 5
số 1 đỏ là giá trị ban đầu, số 1 đen đến số 5 là 5 giá trị của i, nhân 5 lần là do ta quy định.
Không phải là 6! mà chỉ là 5!. vậy ta sửa lại For i = 1 to 6

Cuối cùng ta có vòng lặp hoàn chỉnh:

kq = 1
For i = 1 to 6
kq = kq * i
next i

Để ứng dụng bài tập này lên Excel, ta cần đưa nó vào giữa cặp Private sub và end sub. Mở 1 Worksheet mới, tại cell A1 gõ vào 1 số bất kỳ để tính giai thừa. Ta muốn kết quả nằm ở cell B1. Ta cũng muốn xem sau 1 vòng tính, giá trị của kq là bao nhiêu nằm lần lượt ở A2, A3, . . .
Bạn đừng chê cái ý muốn này (tính giai thừa trò trẻ ấy mà có gì mà xem), có ích đấy khi bạn thử ở những vòng lặp phức tạp hơn, hãy đi từ dễ đến khó.
Tạo 1 nút lệnh đặt tên là cmb1, double click vào cmb1 vào cửa sổ code chèn vào giữa sub và end sub để có 1 macro hoàn chỉnh như sau:

Private Sub Cmb1_click()
num=range("sheet1!A1").value
Range("sheet1!A1:A100").clear
kq = 1
For i = 1 to num
kq = kq * i
range("sheet1!A1").Offset(i,0).value = kq
next i
range("sheet1!B1").value = kq
end sub

Sau đó trở lại Excel, click nút lệnh xem kết quả.

chú ý range("sheet1!A1").Ofset(i,0).value = kq đặt bên trong For next nên chạy 6 lần hiện lên 6 cell, vị trí quy định bởi Offset

Còn range("sheet1!B1").value = kq đặt ngoài vòng For next nên chỉ chạy 1 lần hiện lên ở 1 cell B1.

Lần sau mình sẽ giới thiệu những thí dụ khác khó dần lên, rồi 2 vòng For lồng nhau.