Sub MapDuLieu()
Dim DongCuoi1 As Long
Dim DongCuoi2 As Long
Dim i As Integer
Dim j As Integer
DongCuoi1 = ThisWorkbook.Sheets("Data").Range("A" & Rows.Count).End(xlUp).Row
DongCuoi2 = ThisWorkbook.Sheets("Map").Range("A" & Rows.Count).End(xlUp).Row
For i = 2 To DongCuoi1
For j = 2 To DongCuoi2
If Worksheets("Data").Range("C" & i).Value = Worksheets("Map").Range("B" & j).Value Then
Worksheets("Data").Range("AI" & i).Value = Worksheets("Map").Range("E" & j).Value
End If
Next j
Next i
End Sub
Em dùng đoạn này để map dữ liệu giống như hàm vlookup nhưng tốc độ xử lý rất chậm ạ, mỗi sheet khoảng 5000 dòng, Thầy chỉ giúp em các tối ưu tốc độ với ạ. Em cảm ơn!
việc sử dụng vòng lặp for thường tốc độ chậm, tối ưu chỉ nên for với giá trị dưới 100.
Với các mục đích dùng vòng lặp theo nhiều giá trị thì sử dụng vòng lặp Do sẽ tốt hơn, hoặc bạn tìm hiểu thêm về mảng trong VBA:
https://gitiho.com/blog/huong-dan-ve-...
việc dùng mảng sẽ nhanh hơn so với dùng Range
Thầy ơi, câu hỏi không liên quan đến bài lắm, nhưng muốn thầy tư vấn giúp ạ. Em em sang năm thị đại học, định hướng học trường gì nghành gì mà có thể làm web viết code siêu như thầy được ạ. Để em định hướng cho em em ạ.
Em cảm ơn.
VBA chỉ là lập trình ở mức cơ bản thôi, và ứng dụng chủ yếu trong công việc văn phòng: kế toán, tài chính, xây dựng, marketing... chứ không phải về web.
Với làm web thì bạn sẽ học các ngôn ngữ lập trình khác. Có rất nhiều ngôn ngữ lập trình bạn nhé.
Nếu bạn yêu thích việc lập trình, phát triển tư duy làm việc tự động thì bạn có thể thi vào các trường có khoa CNTT (công nghệ thông tin). Tùy học lực bạn có thể chọn trường phù hợp.