Có cách nào tối ưu nhất (nhanh nhất, gọn nhất) để tìm dữ liệu trên 3 range khác nhau

Liên hệ QC

thuyyeu99

Trùm Nhiều Chuyện
Tham gia
6/6/08
Bài viết
1,729
Được thích
874
Em có 3 vùng dữ liệu

Vùng 1
A1:C20

Vùng 2
D1:E20

Vùng 3
G1:J20

Có cách nào tối ưu nhất (nhanh nhất, gọn nhất) để tìm dữ liệu trên cột đầu tiên của 3 vùng đó không (bang VBA). Nếu được nhờ các anh chị hướng dẫn giúp.

Cám ơn các anh chị quan tâm
 
Em có 3 vùng dữ liệu

Vùng 1
A1:C20

Vùng 2
D1:E20

Vùng 3
G1:J20

Có cách nào tối ưu nhất (nhanh nhất, gọn nhất) để tìm dữ liệu trên cột đầu tiên của 3 vùng đó không (bang VBA). Nếu được nhờ các anh chị hướng dẫn giúp.

Cám ơn các anh chị quan tâm
Hổng hiểu lắm về cái vụ TÌM này! Tìm xong rồi làm gì nữa?
Còn nếu đề xác định cột đầu tiên của 1 vùng thì Resize là được rồi
PHP:
 Range("... gì gì đó...").Resize(,1)
Đây chính là cột đầu tiên
 
Upvote 0
Hổng hiểu lắm về cái vụ TÌM này! Tìm xong rồi làm gì nữa?
Còn nếu đề xác định cột đầu tiên của 1 vùng thì Resize là được rồi
PHP:
 Range("... gì gì đó...").Resize(,1)
Đây chính là cột đầu tiên

Dạ em có 3 vùng dữ liệu rời mà em muốn tìm dữ liệu trên cột đầu tiên thôi của mỗi vùng. có cách nào tối ưu tốc độ tìm kiếm trên 3 vùng đó không ạh.(Mục đích em hỏi là để giảm đi thời gian tìm kiếm để code em chạy lẹ hơn chút đó anh)
ví dụ như: Ghép 3 vùng lại thành 1 vùng hay là tìm vùng 1 xong rồi tới vùng 2 và tới vùng 3.
 
Lần chỉnh sửa cuối:
Upvote 0
Dạ em có 3 vùng dữ liệu rời mà em muốn tìm dữ liệu trên cột đầu tiên thôi của mỗi vùng. có cách nào tối ưu tốc độ tìm kiếm trên 3 vùng đó không ạh.(Mục đích em hỏi là để giảm đi thời gian tìm kiếm để code em chạy lẹ hơn chút đó anh)
ví dụ như: Ghép 3 vùng lại thành 1 vùng hay là tìm vùng 1 xong rồi tới vùng 2 và tới vùng 3.
Bạn dùng phương thức UNION để gọpp nó lại thử xem sao
Mã:
union([A1:C20],[D1:E20],[G1:J20])
 
Upvote 0
Dạ em có 3 vùng dữ liệu rời mà em muốn tìm dữ liệu trên cột đầu tiên thôi của mỗi vùng. có cách nào tối ưu tốc độ tìm kiếm trên 3 vùng đó không ạh.(Mục đích em hỏi là để giảm đi thời gian tìm kiếm để code em chạy lẹ hơn chút đó anh)
ví dụ như: Ghép 3 vùng lại thành 1 vùng hay là tìm vùng 1 xong rồi tới vùng 2 và tới vùng 3.
Thì vầy đi
Union(Rng1.Resize(,1), Rng2.Resize(,1), Rng3.Resize(,1))).Find(... cái gì đó...)
Còn nói về tốc độ thì... không biết đâu nha! Nói chung bằng cách nào đó chuyển mọi thứ thành Array thì sẽ nhanh hơn thực thi tìm kiếm và tính toán trên Range
 
Upvote 0
Thì vầy đi
Union(Rng1.Resize(,1), Rng2.Resize(,1), Rng3.Resize(,1))).Find(... cái gì đó...)
Còn nói về tốc độ thì... không biết đâu nha! Nói chung bằng cách nào đó chuyển mọi thứ thành Array thì sẽ nhanh hơn thực thi tìm kiếm và tính toán trên Range


Anh ví dụ nhỏ về chuyển thành Arr giúp em được không ạh
 
Upvote 0
Anh ví dụ nhỏ về chuyển thành Arr giúp em được không ạh
Trên diển đàn này, các bài viết liên quan đến TỔNG HỢP dữ liệu tôi đều dùng Array, chẳng hạn bài này:
http://www.giaiphapexcel.com/forum/showthread.php?37895-L%E1%BA%A5y-DM-duy-nh%E1%BA%A5t-theo-2-c%E1%BB%99t-Scripting.Dictionary!
Bạn đã từng xem qua rồi mà:
Trà công nhậnScripting.dictonary và Array hay thiệt từ cái thuật toán của anh ndu96081631 thêm chút xíu nữa là thay cho hàm SumIfs (4 Đk) trong 2007 chạy ngon lành thiệt. từ 4,273437500 còn 1,576562500 S

Cám ơn anh
ThuNghindu96081631 nhiều.

 
Upvote 0
Em có 3 vùng dữ liệu

Vùng 1
A1:C20

Vùng 2
D1:E20

Vùng 3
G1:J20

Có cách nào tối ưu nhất (nhanh nhất, gọn nhất) để tìm dữ liệu trên cột đầu tiên của 3 vùng đó không (bang VBA). Nếu được nhờ các anh chị hướng dẫn giúp.

Cám ơn các anh chị quan tâm
Như anh NDU nói đúng đó, trước tôi cũng hay dùng find nay thì dùng arr.
Cụ thể như
PHP:
Dim Arr(), tmpStr as string, i as long
tmpStr="...."
Arr=.Range(...)..Resize(,1).value
For i = 1 to Ubound(Arr)
if Arr(i)=tmpStr then
...
endif
next i
 
Upvote 0
Trên diển đàn này, các bài viết liên quan đến TỔNG HỢP dữ liệu tôi đều dùng Array, chẳng hạn bài này:
http://www.giaiphapexcel.com/forum/...y-DM-duy-nhất-theo-2-cột-Scripting.Dictionary!
Bạn đã từng xem qua rồi mà:

Sau khi ngâm cứu bài đó của anh em thay đổi code của em rất nhiều anh ạh (hầu như máy cái bảng tổng hợp của em điều đi theo hướng đó). Nhiều lúc em hỏi nhiều bài thấy hơi ngớ ngẩn nhưng ý em là muốn học hỏi thêm ý tưởng của mọi người để vận dụng vào cộng việc em đang làm cho linh hoạt giống như bài này http://www.giaiphapexcel.com/forum/...uy-nhat-tính-tổng-và-đưa-vào-cột-theo-yêu-cầu từ bài của anh em chỉ cần thay đổi chút xíu là giải quyết được vấn đề rồi.
 
Upvote 0
Web KT
Back
Top Bottom