Giúp đoạn code VBA lấy dữ liệu theo điều kiện (2 người xem)

Người dùng đang xem chủ đề này

hongdaisu

Thành viên chính thức
Tham gia
9/9/14
Bài viết
87
Được thích
3
Hi -chào mọi người
Mình có 1file excel- ở sheet 2 mình mún khi nhập vào tên nhà cung cấp có ở Cột O ở sheet 1 thì sẽ có được tất cả thông tin như mẫu ở sheet 2
 

File đính kèm

Cái này có thể dùng công thức như bạn muốn code thì có thể dùng code này
[GPECODE=vb]

Sub LocKH()
Dim cotdl, i As Long, k As Long
Dim VungDL, j As Long, cotkq
Dim KQ(1 To 100, 1 To 9)
VungDL = Sheets("Sheet1").Range("A11:AJ25").Value
cotdl = Array(1, 2, 3, 4, 6, 11, 32, 33, 17)
cotkq = Array(1, 2, 3, 4, 5, 6, 7, 8, 9)
For i = 1 To UBound(VungDL)
If VungDL(i, 15) = Sheet2.Range("k1").Value Then
j = j + 1
For k = 0 To UBound(cotdl)
KQ(j, cotkq(k)) = VungDL(i, cotdl(k))

Next
End If
Next
With Sheets("Sheet2")
.Range("A11:I100").ClearContents
.Range("A4").Resize(j, 9).Value = KQ
End With
End Sub


[/GPECODE]

Xem file để dễ hiểu
 
Lần chỉnh sửa cuối:
Upvote 0
Trước hết thank bạn nhiều
khi nhập thì nó phân biệt chữ hoa và chữ thường-bạn có thể để nó ko phân biệt được ko
và cho mình xin cái công thức luôn bạn nhé
 
Upvote 0
Trước hết thank bạn nhiều
khi nhập thì nó phân biệt chữ hoa và chữ thường-bạn có thể để nó ko phân biệt được ko
và cho mình xin cái công thức luôn bạn nhé

Bạn xem file dưới có chỉnh lại đoạn code Ucase để không phân biệt hoa thường, đồng thơi có chức công thức dùng thêm cột phụ cho file nhẹ
 

File đính kèm

Upvote 0
help-cái công thức đó sử thế nào bạn.phiền bạn 1 tí nhé- bạn có thể giải thick đoạn code vba rõ ràng 1 tí cho mình dc ko-để mình làm file khác dữ liệu lớn hơn
 
Upvote 0
làm phiền bạn tí

help-cái công thức đó sử thế nào bạn.phiền bạn 1 tí nhé- bạn có thể giải thick đoạn code vba rõ ràng 1 tí cho mình dc ko-để mình làm file khác dữ liệu lớn hơn
 
Upvote 0
help-cái công thức đó sử thế nào bạn.phiền bạn 1 tí nhé- bạn có thể giải thick đoạn code vba rõ ràng 1 tí cho mình dc ko-để mình làm file khác dữ liệu lớn hơn
[GPECODE=vb]
Sub LocKH()
Dim cotdl, i As Long, k As Long
Dim VungDL, j As Long, cotkq
Dim KQ(1 To 100, 1 To 9)
Tạo mảng gồm 100 dòng 9 cột
VungDL = Sheets("Sheet1").Range("A11:AJ25").Value
Gán dữ liệu gốc vào VungDL để xử lý trên mảng
cotdl = Array(1, 2, 3, 4, 6, 11, 32, 33, 17)
Vị trí cột cần lấy dữ liệu của vùng dữ liệu gốc
cotkq = Array(1, 2, 3, 4, 5, 6, 7, 8, 9)
Vi trị cột để đưa vào Mảng KQ
For i = 1 To UBound(VungDL) ' Vòng lặp để duyệt dữ liệu Ubound(VungDL) cho biết dữ liệu có bao nhiều dòng


If VBA.UCase(VungDL(i, 15)) = VBA.UCase([K1]) Then
'Đồng nhất code dữ liệu nhập và code dữ liệu muốn lấy
Nếu duyệt Vùng dữ liệu cột 15 code KH trùng với nhau thì
j = j + 1 'Gán biến J tăng lên 1
For k = 0 To UBound(cotdl)
KQ(j, cotkq(k)) = VungDL(i, cotdl(k)) ' đưa dữ liệu mà dòng có KH muốn lấy vào mảng KQ


Next
End If
Next


With Sheets("Sheet2") 'Mở cầu lệnh with
.Range("A11:I100").ClearContents ' Xóa dữ liệu cũ nếu nhiều thay đổi phù hợp
.Range("A4").Resize(j, 9).Value = KQ ' Gán giá trị của Mảng KQ vào sheet2
End With ' kết thúc with
End Sub


[/GPECODE]
Mong giải thích vậy bạn hiểu
 
Upvote 0
hi bạn.
bạn chỉ mình cách tạo cái marco với.screen càng tốt bạn nhé
 
Lần chỉnh sửa cuối:
Upvote 0
code của bạn có lỗi 1 chổ- khi mình tim với tên là "bapharco" thì cho ra kết quả đúng nhưng khi tìm tiếp với tên "bách niên" thì dữ liệu của bapharco nó vẫn còn
 
Upvote 0
hi bạn.
bạn chỉ mình cách tạo cái marco với.screen càng tốt bạn nhé

Là sao tôi không hiểu
code của bạn có lỗi 1 chổ- khi mình tim với tên là "bapharco" thì cho ra kết quả đúng nhưng khi tìm tiếp với tên "bách niên" thì dữ liệu của bapharco nó vẫn còn

Ah bạn chỉnh lại code chỗ này
.Range("A11:I100").ClearContents
Thành

.Range("A4:I100").ClearContents

Tôi giải thích code trên đó bạn đọc không hiểu? nếu hiểu tôi nghĩ bạn tự sửa được
 
Upvote 0
khi muốn thêm dữ liệu vào sheet1 và lưu thì nó bắt lưu file mới-có thể lưu đè được ko bạn
 
Upvote 0
cho mình hỏi sao khi nhập dữ liệu mới ko lưu đè mà nó bắt lưu thành file khác vậy-mún lưu đè thì pải làm sao
 
Upvote 0

Bài viết mới nhất

Back
Top Bottom