Vòng lặp for trong excel

     

Trong bài này chúng ta sẽ tìm hiểu về các vòng lặp trong VBA như: vòng lặp For, vòng lặp Do While, vòng lặp Do Until, vòng lặp For Each. Kèm theo đó là những ví dụ đơn giản nhất.

*


*

Vòng lặp là một trong những kỹ thuật mạnh mẽ nhất của các ngôn ngữ lập trình. Vòng lặp trong Excel VBA cho phép bạn lặp qua một dải ô chỉ với một vài dòng code.

Bạn đang xem: Vòng lặp for trong excel

1. Vòng lặp For trong VBA

Vòng lặp For đơn giản

Vòng lặp For được dùng trong trường hợp biết trước tổng số lần lặp.

Bước nhảy ở vòng lặp for là 1 đơn vị.

Bài viết này được đăng tại


Đoạn code này sẽ gán giá trị 100 cho các ô từ A1 đến A6. Kêt quả chạy chương trình này sẽ như sau:

Mình sẽ giải thích một chút nhé.

For i = 1 To 6 có nghĩa là lặp 6 lần (1,2,3,4,5,6)Cells(i, 1).Value = 100 sẽ gán giá trị 100 cho ô trong lần lặp đó.Lần 1: i = 1 nên Cells(1, 1).Value = 100Lần 2: i = 2 nên Cells(2, 1).Value = 100Lần 3: i = 3 nên Cells(3, 1).Value = 100Lần 4: i = 4 nên Cells(4, 1).Value = 100Lần 5: i = 5 nên Cells(5, 1).Value = 100Next i là cú pháp bắt buộc. Biến i chính là biến điều khiển vòng lặp.

Vòng lặp For lồng nhau

Bạn có thể sử dụng vòng lặp For lồng nhau để lặp qua một dãy gồm nhiều ô và nhiều cột.

Ví dụ: Gán giá trị 100 cho các ô từ A1 đến B6.


Dim i As Integer, j As IntegerFor i = 1 To 6 For j = 1 To 2 Cells(i, j).Value = 100 Next jNext i
Vòng lặp bên ngoài sẽ lặp 6 lần, và mỗi lần lặp nó sẽ lặp 2 lần ở vòng lặp con bên trong.

Kết quả như sau:

For Loop Step

Step chính lá giá trị bước nhảy của vòng lặp.


Sub ForEach_CountTo10_Even() Dim n As Integer For n = 2 To 10 Step 2 MsgBox n Next n End Sub
Mặc định của Step là bằng 1 nên những vòng lặp bạn truyền step thì đó là vòng lặp có bước nhảy tăng 1 đơn vị.Nếu bạn muốn thực hiện vòng lặp giảm thì hãy thiết lập step là số âm.Ví dụ 1: Lặp từu 10 đến 1.


Sub ForEach_Countdown_Inverse() Dim n As Integer For n = 10 To 1 Step -1 MsgBox n Next n MsgBox "Lift Off" End Sub
Ví dụ 2: Sử dụng vòng lặp lồng nhau để in ra bảng cửu chương nhân.


Sub Nested_ForEach_MultiplicationTable() Dim row As Integer, col As Integer For row = 1 To 9 For col = 1 To 9 Cells(row + 1, col + 1).Value = row * col Next col Next row End Sub
Kết quả sẽ có dạng như sau:

Exit For

Đây là lệnh dùng để dừng vòng lặp For ngay lập tức. Khi gặp lệnh này thì dù điều kiện dúng hay sai nó cũng sẽ kết thúc vòng lặp, kể cả những đoạn code còn chưa chạy ở phía dưới cũng không thực thi.

Ví dụ dưới đây sẽ lặp các ô A1 đến A1000, nếu gặp ô nào có giá trị "error" thì xuất thông báo và kết thúc vòng lặp.


Sub ExitFor_Loop() Dim i As Integer For i = 1 To 1000 If Range("A" & i).Value = "error" Then Range("A" & i).Select MsgBox "Error Found" Exit For End If Next i End Sub

Continue For

Đây là lệnh bỏ qua lần lặp hiện tại và nhảy tới lần lặp kế tiếp. Khi gặp lệnh này thì trình biên dịch sẽ bỏ qua những đoạn code phía dưới của lần lặp hiện tại, sau đó kiểm tra điều kiện lặp và lặp cho lần lặp kế tiếp.

Cách dùng nó nhưu lệnh Exit For.

Xem thêm: Điều Kiện Làm Thẻ Đen Vietcombank, Thẻ Đen Vietcombank Là Gì

2. Vòng lặp For Each trong VBA

Vòng lặp For Each sẽ lặp qua từng phần tử của một danh sách (collection), thường sẽ là:

Các ô trong ExcelCác biểu đồ trong SheetCác SheetCác ô trong một vùng chọn...

Cú pháp của nó như sau:


For Each Object in Collection Next
Trong đó:

Object là biến tạm dùng để chứa phần tử của mỗi lần lặpColection là danh sách đối tượng cần lặpDo something là chương trình chính cho vòng lặpNext Object là lệnh đóng vòng lặp

Vòng lặp For Each được sử dụng để lăp qua các phần tử của một danh sách, chẳng hạn như một dãy các trang tính, dãy các ô hoặc một dãy các số tự nhiên.

Ví dụ 1: Lặp qua tất cả các bảng tính trong Workbook

Đoạn code này sẽ lặp qua tất cả các trang tính trong và hiển thị chúng:


Sub LoopThroughSheets()Dim ws As Worksheet For Each ws In Worksheets ws.Visible = True Next End Sub
Ví dụ 2: Lặp qua tất cả các ô trong một phạm vi (Range)

Đoạn code này sẽ lặp qua một tất cả các ô trong mộ phạm vi, kiểm tra xem giá trị của ô là âm hay dương:


Sub If_Loop()Dim Cell as Range For Each Cell In Range("A2:A6") If Cell.Value > 0 Then Cell.Offset(0, 1).Value = "Positive" ElseIf Cell.Value

Ví dụ 3: Lặp qua các cell từ A1 đến A10


Sub ForEachCell_inRange() Dim cell As Range For Each cell In Range("a1:a10") cell.Value = cell.Offset(0, 1).Value Next cell End Sub
Ví dụ 4: Lặp qua từng sheet và loải bỏ tính năng mật khẩu bảo vệ.


Sub ForEachSheet_inWorkbook() Dim ws As Worksheet For Each ws In Worksheets ws.Unprotect "password" Next ws End Sub
Ví dụ 5: Lặp qua những workbook đang ở trạng thái open.


Sub ForEachWB_inWorkbooks() Dim wb As Workbook For Each wb In Workbooks wb.Close SaveChanges:=True Next wb End Sub
Ví dụ 6: Lặp qua các Shape trong Sheet đang active.


Sub ForEachShape() Dim shp As Shape For Each shp In ActiveSheet.Shapes shp.Delete Next shp End Sub
Ví dụ 7: Kết hợp lệnh If Then


Sub ForEachCell_inRange() Dim cell As Range For Each cell In Range("a1:a10") If cell.Value = "" Then _ cell.EntireRow.Hidden = True Next cell End Sub

3. Vòng lặp Do While trong VBA

Nếu vòng lặp For dùng để lặp trong trường hợp biết trước tổng số lần lặp thì vòng lặp Do While lại khác, ta sẽ dùng nó trong trường hợp không biết trước tổng số lần lặp.

Đặt điều kiện ở trên

Cú pháp của nó như sau:


Do condition // statementsLoop
Trong đó statements chính là những đoạn code được chạy nếu condition = true.

Bạn phải chú ý là trong các lệnh ở statements phải có trường hợp đưa ra nhưng điều kiện sai để dừng vòng lặp, nếu không sẽ dẫn đến lặp vô hạn.

Ví dụ 1: Gán giá trị 20 cho các ô từ A1 đến A5.


Dim i As Integeri = 1Do While i
Kết quả:

Ví dụ 2: Gán giá trị của các ô từ B1 đến B5, giá trị được lấy từ cột A tương ứng và cộng thêm 10 đơn vị.


Dim i As Integeri = 1Do While Cells(i, 1).Value "" Cells(i, 2).Value = Cells(i, 1).Value + 10 i = i + 1Loop
Kết quả:

Đặt điều kiện ở cuối

Bạn có thể thay đổi biến thể của Do While bằng cách đặt điều kiện ở cuối.


Do " statementLoop While Condition
Ví dụ: Lặp từ 1 đến 10.


Sub DoLoopWhile() Dim n As Integer n = 1 Do MsgBox n n = n + 1 Loop While n

4. Vòng lặp Do Until trong VBA

Đặt điều kiện ở đầu bài

Vòng lặp Do Until sẽ lặp cho đến khi điều kiện được đáp ứng. Cú pháp về cơ bản giống như các vòng lặp Do While:


Do Until Condition Loop
Ví dụ:


Sub DoUntilLoop() Dim n As Integer n = 1 Do Until n > 10 MsgBox n n = n + 1 LoopEnd Sub

Đặt điều kiện ở cuối bài

Và tương tự, bạn cũng có thể đặt condition ở cuối.


Do Loop Until Condition
Ví dụ


Sub DoLoopUntil() Dim n As Integer n = 1 Do MsgBox n n = n + 1 Loop Until n > 10End Sub

Exit Do

Lệnh này có công dụng tương tự lệnh Exit For, tức là nó sẽ nhảy ra khỏi vòng lặp ngay lập tức.

Ví dụ: Viết lại ví dụ ở phần Exit For.


Sub ExitDo_Loop() Dim i As Integer i = 1 Do Until i > 1000 If Range("A" & i).Value = "error" Then Range("A" & i).Select MsgBox "Error Found" Exit Do End If i = i + 1 Loop End Sub
Trên là cách sử dụng vòng lặp trong VBA như: Vòng lặp For, Do While, Do Until, For Each.


Bài trước Bài tiếp


Cách chèn link ảnh vào Excel trên máy tính

Ngoài ra, bài viết còn hướng dẫn cách chèn link ảnh trực tuyến hàng loạt…



Cách tách và gộp ô trong Excel

Trong bảng tính Microsoft Excel, có thể sẽ có lúc các bạn cần tách ô…



Hàm MONTH() trong Excel

Cách dùng hàm MONTH() trong Excel



Hàm YEAR () trong Excel

Cách dùng hàm YEAR () trong Excel


Hàm HLOOKUP() trong Excel

Cách dùng hàm HLOOKUP() trong Excel


Hàm VLOOKUP() trong Excel

Cách dùng hàm VLOOKUP() trong Excel


Hàm LOOKUP() trong Excel

Cách dùng hàm LOOKUP() trong Excel


Hàm ABS() trong Excel

Cách dùng hàm ABS() trong Excel


Hàm SUM() trong Excel

Cách dùng hàm SUM() trong Excel


Hàm SQRT() trong Excel

Cách dùng hàm SQRT() trong Excel


Hàm MOD() trong Excel

Cách dùng hàm MOD() trong Excel


Hàm SUMIF() trong Excel

Cách dùng hàm SUMIF() trong Excel


Hàm SUBTOTAL() trong Excel

Cách dùng hàm SUBTOTAL() trong Excel


Hàm ROUND() trong Excel

Cách dùng hàm ROUND() trong Excel


Hàm SUMPRODUCT() trong Excel

Cách dùng hàm SUMPRODUCT() trong Excel


Hàm COUNT() trong Excel

Cách dùng hàm COUNT() trong Excel


Hàm COUNTA() trong Excel

Cách dùng hàm COUNTA() trong Excel


Hàm COUNTBLANK() trong Excel

Cách dùng hàm COUNTBLANK() trong Excel


Hàm MAX() trong Excel

Cách dùng hàm MAX() trong Excel


Hàm MIN() trong Excel

Cách dùng hàm MIN() trong Excel


WORDPRESS
HTML Templates
Theme WordPress
Plugin WordPress
Lập trình WordPress
Thủ thuật WordPress
WEB HOSTING
Quản trị Linux
Thủ thuật Hosting
Kiến thức Domain
WEB FRONTEND
Javascript
AngularJS
jQuery
jQuery Mobile
HTML & CSS
Bootstrap
TypeScript
SASS CSS
VueJS
NestJS
Học ReactJS
WEB BACKEND
PHP
Codeigniter
Laravel
Phalcon
OpenCart
NodeJS
Blogspot
DATABASE
Học MySQL
Học MongoDB
CSDL căn bản
Học Oracle
Học SQL Server
Học SQLite
PROGRAMMING
Python
Java
Pascal
Học C#
Học Ruby
Học Swift
C / C++
Kotlin
Golang
Giải thuật
Visual Basic
MOBILE DEV
React Native
Học iOS
Android
Flutter
CÔNG CỤ
Học Git
Testing
Control Panel
Dev Tool
FFmpeg
TIN HỌC
Excel
Word
PowerPoint
Access
Photoshop
MÔN HỌC
Tiếng Anh
Toán
Tiếng Nhật
Văn học
VIDEO
CSS Lab
PHP Lab
Giới thiệu
Giới thiệu Liên hệ Chính sách Điều khoản
Thủ thuật
Máy tính Game Điện thoại Ứng dụng
Link hay
Môn học Toán Văn học Tiếng Anh
Liên kết
Gamehow.net
Top Vinsports.net Tải app dk8, dk8 bet, tải dk8