Xin chào. Cho mình hỏi 2 công thức từ phút 06.48 trở đi. Range(A1) theo như các bài trước có nghĩa là ô A1, range (A1:C10) có nghĩa là vùng A1:C10. Nhưng trong video mình lại thấy khi chạy code với 2 range này thì lại ra những ô+range khác?
Ở phần này có sử dụng cách viết Offset kèm theo Range. Tức là bạn có thể di chuyển tới 1 vị trí khác, tính từ vị trí Range ban đầu làm mốc.
OFFSET trong VBA cũng gần giống với hàm OFFSET của Excel, cho phép bạn di chuyển từ vị trí ban đầu sang 1 vị trí khác dựa trên việc tịnh tiến đi một số lượng dòng, cột nhất định.
Khi mới học về VBA bạn sẽ thấy khó hiểu với việc dùng offset, nhưng khi viết code nhiều bạn sẽ thấy offset có rất nhiều tác dụng:
- Giúp bạn viết code nhanh hơn (không cần tìm range mới mà chỉ cần giữ range cũ rồi tịnh tiến đến điểm mới)
- Giúp bạn dễ tìm ra điểm mới hơn (xác định 2 biến số dòng, số cột cần tịnh tiến)
- Dễ kết hợp với vòng lặp (cho 2 biến trong hàm offset) => sẽ dễ viết tọa độ Range hơn khi viết vòng lặp theo cột.