Trong trường hợp bảng đối chiếu có 1000 giá trị thì sao ạ, không có hàm giống vlookup hả thầy
Chào bạn phần này bạn có thể dùng vòng lặp và điều kiện if để thực hiện nhé
for i = 1 to dc
if(sheetnguon.range("A"&i).value = sheetname.range("B5")) then
sheetname.range("B6").value = sheetnguon.range("B"&i).value
end if
next i
Chào bạn bạn sử dụng vòng lặp thì 10.000 bộ phận nó cũng duyệt ra, bạn theo ví dụ đó code nhé, có phần nào khúc mắc cứ mạnh giạn hỏi gitiho
trong ví dụ trên, em thử dùng 2 vòng lặp, gọi 2 biến i và n để chạy song song 2 bảng dữ liệu nhưng gặp lỗi
for i = 1 to 7
for n = 1 to 3 ạ
Chào bạn bạn có thể đẩy file của mình lên giúp gitiho không?
Chào bạn với trường hợp này do chỉ cần dùng 1 biến i là được, vì cột dữ liệu bạn lấy song song
trong trường hợp lệch nhau thì sao ạ, em cần dạng tổng quát í ạ. em chỉ đang lấy ví dụ số cụ thể thôi ạ
Hàm vlookup sử dụng được cho nhiều range dữ liệu khác nhau ạ
như ví dụ trong bài giảng thì 2 bảng có số dòng lệch nhau đó ạ
Chào bạn nếu lệch nhau bạn thêm vòng lặp như sau
for i = 1 to n
for j = 1 to m
if(range("A"&i) = range("B"&j)) then
// code lấy dữ liệu
end if
next j
next i
Còn nếu bạn muốn tốc độ nhanh nữa thì sẽ sử dụng mảng để thay thế nhé.
Chào bạn bạn thử code sau nhé:
Sub timdulieu()
Dim i, j
For i = 2 To 8
For j = 2 To 4
If (Range("B" & i).Value = Range("E" & j).Value) Then
Range("C" & i).Value = Range("F" & j).Value
End If
Next j
Next i
End Sub
em đã chạy được code. Em cảm ơn thầy ạ
Chúc bạn học tốt cùng gitiho phần 8 và 4 kia bạn có thể dùng code dongcuoi để ứng dụng vào nhé. về bản chất là bạn lặp theo điều kiện nào đó là được
Em đang viết câu lệnh thực hiện gồm:
- Mở 1 file bất kì được chọn
- Thêm 1 sheet vào file đó và copy tất cả dữ liệu từ cột A đến cột D của sheet1
Em đã viết code như dưới nhưng debug ở dòng gán dữ liệu. Nhờ thầy xem giúp em đọc code phía dưới ạ.
Sub loc_noi_dung() With Application.FileDialog(msoFileDialogFilePicker) .AllowMultiSelect = False .Show Dim wb As Workbook Set wb = Workbooks.Open(.SelectedItems(1)) Dim dongdau As Long dongdau = 1 Dim dongcuoi As Long dongcuoi = wb.Sheets(1).Range("A" & Rows.Count).End(xlUp).Row Dim ws_add As Worksheet Set ws_add = wb.Worksheets.Add wb.ws_add.Range("A" & dongdau & ":D" & dongcuoi).Value = wb.Sheet1.Range("A" & dongdau & ":D" & dongcuoi).Value End With End Sub
Chào bạn bạn thử với sau nhé.
thưa thầy, em đã tham khảo bài tập trên và viết code tương tự nhưng luôn bị sai ở lệnh gán giá trị, ở dòng này ạ
wb.ws_add.Range("A" & dongdau & ":D" & dongcuoi).Value = wb.Sheet1.Range("A" & dongdau & ":D" & dongcuoi).Value
Khi viết code mà có chỉ rõ đối tượng workbook thì bạn không được viết đối tượng Worksheet theo code-name.
Phải viết theo sheet-name hoặc theo số thứ tự của sheet.
Bạn sửa lại chỗ này nhé: wb.Sheet1.Range...
Chào bạn bạn cần viết dạng như sau
Workbooks(wb).Sheets(ws).Range("A"...
phần này bạn sử dụng tên sheets nhé. không sử dụng code name, codename áp dụng với nguyên gốc file đó thôi nhé.