Nhờ sửa lỗi code VBA (1 người xem)

Liên hệ QC

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

swalowbird

Thành viên mới
Tham gia
22/5/16
Bài viết
49
Được thích
1
Các bác sửa lỗi giúp em code tìm kiếm thay Vlook up này

Lỗi ở chỗ khi em lấy vùng điều kiện là 1 ô thì xảy ra lỗi ở đoạn code này

sArr = rng1.Value

giúp em với


Option Explicit


Sub vtk()
Dim dong As Range
Dim rng1 As Range
Dim rng2 As Range
Dim rng As Range
Dim K As Integer


Set rng1 = Application.InputBox(Prompt:="chon vung dieu kien ", Title:="Range Select", Type:=8)


Set rng2 = Application.InputBox(Prompt:="chon vung tham chieu ", Title:="Range Select", Type:=8)


Set rng = Application.InputBox(Prompt:="chon vung tra ket qua ", Title:="Range Select", Type:=8)


Dim sArr() As Variant, i As Long
Dim kArr() As Variant, j As Long
ReDim kArr(1 To 1000, 1)
i = j
sArr = rng1.Value


K = InputBox(" Nhap so cot du lieu ", " nhap k")


With rng2
For i = 1 To UBound(sArr)
Set dong = rng2.Find(sArr(i, 1), , xlFormulas, xlWhole)
If Not dong Is Nothing Then
j = i
kArr(i, 1) = dong.offset(0, K).Value
End If
Next i
End With


With rng
For j = 1 To UBound(sArr)
rng.Cells(j, 1) = kArr(j, 1)
Next j


End With


End Sub
 

File đính kèm

Upvote 0
(1) Thanh thoát là với macro bài đầu thôi;
(2) Find() là phương tưức có nhiều tùy chọn; Nếu không muốn ta có thể bỏ qua chúng mà;
Bạn có khi nào thấy câu lệnh này chưa:
Mã:
 Rng.Find("GPE.COM")
chưa?
Cái chuyện bỏ qua tham số thì rõ ràng rồi, khổ lỗi dù người dùng có bỏ qua tham số đi nữa thì hàm nó vẫn xử lý như bình thường, khi đó nó sẽ phản ứng theo hướng không chuyền tham số. Mà cũng nói luôn là riêng với find() thì khi không chuyền tham số, nó sẽ dùng các tham số của những lần gọi trước. Để cho đơn giản anh cứ ngồi tự viết phương thức find mới, mà có chức năng tương tự chức năng find của excel, và ngồi viết một hàm vlookup theo phong cách mới đi, chắc chắn vlookup mới sẽ chạy nhanh hơn find mới.
 
Upvote 0
Mình chưa hiểu sư thanh thoát mà bạn nói đến, vlookup tìm kiếm theo dữ liệu, nó có 4 đối số, find là một phương thức tìm kiếm theo rất nhiều chỉ tiêu ( dữ liệu, định dạng), nó có tận 9 đối số. Do vậy về độ nhanh mình nghĩ nó không hơn vlookup. Chưa kể phương thức find sẽ ảnh hưởng tới thiết lập của hộp thoại Find.
Hạn chế của VLOOKUP là chỉ tìm ra kết quả ở dữ liệu nằm ở chiều bên phải cột điều kiện tìm kiếm, chiều ngược lại thì không.
 
Upvote 0
Upvote 0
Web KT

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

Back
Top Bottom