Listbox thể hiện trên 65536 dòng (1 người xem)

Liên hệ QC

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

NGUYENQUANGTHO

Thành viên mới
Tham gia
9/9/10
Bài viết
34
Được thích
33
Chào các bạn. Mình có một vấn đề mong các bạn giải thích như sau:
Tôi muốn Listbox hiển thị trên 65536 dòng thì phải làm sao?
Đây là ví dụ tôi tải trên GPE. Tôi muốn giá trị copy xuống bảng tính là cộ ID và Ngày thì phải thay đổi chỗ nào trong code?
 

File đính kèm

Tôi xin nói rõ thêm là tôi muốn áp dụng file này để tra cứu phụ tùng. Tuy nhiên, danh sách phụ tùng của tôi có khoảng 150.000 dòng. Vậy tôi phải làm thế nào? Nếu tôi để danh sách ấy vào 03 sheet, vậy làm sao hiển thị trên Listbox?
 
Upvote 0
Chào các bạn. Mình có một vấn đề mong các bạn giải thích như sau:
Tôi muốn Listbox hiển thị trên 65536 dòng thì phải làm sao?
Đây là ví dụ tôi tải trên GPE. Tôi muốn giá trị copy xuống bảng tính là cộ ID và Ngày thì phải thay đổi chỗ nào trong code?

Nhìn file thì tôi biết file của ai rồi, file lấy dữ liệu từ Sheet, mà sheet này thuộc Excel 2003, với phiên bản này số dòng lớn nhất là 65536 thôi, vì vậy muốn hơn nữa thì bạn chuyển thành file 2007 trở về sau sẽ được hơn 1 triệu dòng đó.

Bạn cứ chuyển đi rồi nhập dữ liệu hơn số 65536 dòng thử xem nó có hiện lên không nhé!

Bởi vì khi load form có câu lệnh:

Mã:
  With Sheet1.Range("A1").CurrentRegion
    sArray = Intersect(.Cells, .Offset(1)).Value
  End With

Nên bạn không cần phải sửa code đâu!
 
Upvote 0
Tôi xin nói rõ thêm là tôi muốn áp dụng file này để tra cứu phụ tùng. Tuy nhiên, danh sách phụ tùng của tôi có khoảng 150.000 dòng. Vậy tôi phải làm thế nào? Nếu tôi để danh sách ấy vào 03 sheet, vậy làm sao hiển thị trên Listbox?

Cũng nói thêm là nếu là bây giờ thì Thầy ndu96081631 sẽ cải tiến chạy nhanh hơn chục lần đấy!
 
Upvote 0
Cũng nói thêm là nếu là bây giờ thì Thầy ndu96081631 sẽ cải tiến chạy nhanh hơn chục lần đấy!
Rất cảm ơn bạn đã quan tâm. Tuy nhiên, khi tôi chuyển sang 2007, đóng file lại, mở file lên, mở Form thì bị báo lỗi. Còn khi để ở 2003, save as sang 2007 mà chưa đóng file lại thì chạy bình thường. Tôi thật sự chưa hiểu.
Bạn có thể cho một ví dụ của Thầy ndu96081631 được không?
Nói thật là tôi chưa rành VBA lắm. Tôi chỉ chỉnh sửa từ những code trên diễn đàn để tạo file theo nhu cầu thôi. Bạn có thể giải thích giùm mình câu lệnh sau được không.

With Sheet1.Range("A1").CurrentRegion
sArray = Intersect(.Cells, .Offset(1)).Value
End With

Xin cảm ơn rất nhiều.
 
Upvote 0
Tôi xin nói rõ thêm là tôi muốn áp dụng file này để tra cứu phụ tùng. Tuy nhiên, danh sách phụ tùng của tôi có khoảng 150.000 dòng. Vậy tôi phải làm thế nào? Nếu tôi để danh sách ấy vào 03 sheet, vậy làm sao hiển thị trên Listbox?
Khi người ta đưa dữ liệu vào listbox để tra cứu thì mục đích là lọc ra 1 list ngắn nhất liên quan đến những gì cần thôi. Mắt nào mà có thể tìm kiếm với hơn 100 000 dòng như thế. Tốt nhất là bạn gởi file mẫu lên và nói rõ yêu cầu, biết đâu sẽ có cách ngắn gọn hơn nhiều.
 
Upvote 0
Khi người ta đưa dữ liệu vào listbox để tra cứu thì mục đích là lọc ra 1 list ngắn nhất liên quan đến những gì cần thôi. Mắt nào mà có thể tìm kiếm với hơn 100 000 dòng như thế. Tốt nhất là bạn gởi file mẫu lên và nói rõ yêu cầu, biết đâu sẽ có cách ngắn gọn hơn nhiều.
Yêu cầu của mình cũng giống như file mình đã đính kèm. Tuy nhiên dữ liệu bảng giá phụ tùng của mình có khoảng 150 000 dòng. Dĩ nhiên mình cũng muốn lọc ra 1 list ngắn, nhưng đằng nào cũng là lọc từ dữ liệu lớn mà.
 
Upvote 0
Đây là file dữ liệu và yêu cầu của mình nè:http://www.mediafire.com/?o4s2apy5ae1961s
Nó cũng giống như mục đích của các file mà mình đã tải từ GPE và đính kèm thôi, chỉ có dữ liệu và thứ tự cột cần lấy là khác thôi. Nhưng đó cũng là thách thức lớn cho dân a-ma-tơ như mình.
Mình thấy Listview nhìn đẹp và chuyên nghiệp hơn, các bạn có thể giúp mình theo hướng đó không?
 
Upvote 0
Đây là file dữ liệu và yêu cầu của mình nè:http://www.mediafire.com/?o4s2apy5ae1961s
Nó cũng giống như mục đích của các file mà mình đã tải từ GPE và đính kèm thôi, chỉ có dữ liệu và thứ tự cột cần lấy là khác thôi. Nhưng đó cũng là thách thức lớn cho dân a-ma-tơ như mình.
Mình thấy Listview nhìn đẹp và chuyên nghiệp hơn, các bạn có thể giúp mình theo hướng đó không?

Tôi vửa thí nghiệm gộp 3 bảng giá vào làm một, tổng số dòng lên đến 150,000 dòng thì thấy code chạy rất chậm, e rằng đây không phải là giải pháp tốt
Không biết nếu dùng ADO để lọc thì có cải thiện tốc độ không? Nhờ Hai Lúa test thử nhé
 
Upvote 0
Rất cám ơn các anh chị trên diễn đàn đã quan tâm. Tôi đang rất hồi hộp chờ đợi xem giải pháp nào hiệu quả đây. Mong các cao thủ nhín chút thời gian để giải quyết cho những dữ liệu "khủng" như của tôi.
 
Upvote 0
Rất cám ơn các anh chị trên diễn đàn đã quan tâm. Tôi đang rất hồi hộp chờ đợi xem giải pháp nào hiệu quả đây. Mong các cao thủ nhín chút thời gian để giải quyết cho những dữ liệu "khủng" như của tôi.

Trong thời gian chờ đợi, hỏi thêm bạn cái: trong sheet BangGia, bạn cần lọc cụ thể là cột nào?
 
Upvote 0
Dạ chào anh ndu96081631,
Em thường lọc cột SỐ PHỤ TÙNG và thêm các điều kiện Begins with, Contain, Ends with. Nhưng nếu anh cho lọc thêm cột TÊN PHỤ TÙNG nữa thì tốt quá.
 
Upvote 0
Dạ chào anh ndu96081631,
Em thường lọc cột SỐ PHỤ TÙNG và thêm các điều kiện Begins with, Contain, Ends with. Nhưng nếu anh cho lọc thêm cột TÊN PHỤ TÙNG nữa thì tốt quá.

Chào bạn!
Với yêu cầu chỉ lọc 2 cột như vậy, tôi thay đổi code, lọc bằng Advanced Filter, nhận thấy tốc độ rất nhanh
Bạn tải file về kiểm tra nhé (bấm nút Show Form, gõ từ khóa vào 2 TextBox rồi bấm nút Search)
Riêng về phần Begins with, Contain, Ends with tôi đã bỏ bớt mà thay vào đó bằng cách ký tự đại diện khi gõ trên TextBox. Ví dụ:
- Bạn muốn tìm SỐ PHỤ TÙNG có số đuôi là 4 và TÊN PHỤ TÙNG có từ bắt đầu là Ball
- Vậy bạn sẽ gõ vào TextBox bên trái: *4 và gõ vào TextBox bên phải: Ball* (như hình)

Untitled.jpg


- Bấm nút Search và kiểm tra kết quả xem có chính xác không?
- Tôi chỉ mới làm phần dò tìm, còn việc gán xuống sheet thì phải chờ bạn test xong, nếu OK tôi sẽ làm tiếp
---------------
Tải file tại đây: http://www.mediafire.com/?4u5gcsu9ncvsx7x
 
Upvote 0
Thật tuyệt vời ! Đây chính là cái mình cần và đã tìm hiểu rất lâu nhưng chưa làm được. Rất cảm ơn anh ndu9608163. Mình không ngờ lại được giúp đỡ nhanh đến vậy. Mong anh giúp tiếp phần gán dữ liệu xuống sheet. Em đã test thử, file rất OK.
 
Upvote 0
Thật tuyệt vời ! Đây chính là cái mình cần và đã tìm hiểu rất lâu nhưng chưa làm được. Rất cảm ơn anh ndu9608163. Mình không ngờ lại được giúp đỡ nhanh đến vậy. Mong anh giúp tiếp phần gán dữ liệu xuống sheet. Em đã test thử, file rất OK.

Hỏi lại cho chắc:
- Trong sheet YEUCAU, cột F (Đơn Giá) sẽ lấy đơn giá nào trong form? Giá đại lý hay Giá khách?
- Cột SL và Thành Tiền bạn tính sao đây? Sẽ nhập bằng tay trực tiếp trên sheet hay nhập trên Form?
Nếu có yêu cầu gì khác liên quan đên thiết kế form, bạn có thể tự mình thiết kế lấy rồi đưa lên đây nhé (nói chung là tôi không có năng khiếu về mấy vụ thiết kế này)
 
Upvote 0
Tôi vửa thí nghiệm gộp 3 bảng giá vào làm một, tổng số dòng lên đến 150,000 dòng thì thấy code chạy rất chậm, e rằng đây không phải là giải pháp tốt
Không biết nếu dùng ADO để lọc thì có cải thiện tốc độ không? Nhờ Hai Lúa test thử nhé
Nếu nạp hết 1 lần vào listbox của hơn 150,000 dòng dữ liệu bằng ADO ở excel 2003 thì mất hết 8.299 giây Thầy à.
 
Lần chỉnh sửa cuối:
Upvote 0
Upvote 0
Ẹc... Ẹc... thế thì vẫn thua Advanced Filter: Lọc ra 1 vùng phụ rồi nạp lên listbox vẫn ra kết quả trong nháy mắt

Ý em là nạp hết dữ liệu 150,000 dòng vào listbox 1 lần chứ không phải lọc. Test kỹ lại thì mất 8.299 giây cho hơn 150,000 dòng.
 
Upvote 0
Ý em là nạp hết dữ liệu 150,000 dòng vào listbox 1 lần chứ không phải lọc. Test kỹ lại thì mất 8.299 giây cho hơn 150,000 dòng.

Nếu không lọc gì cả thì cần gì phải ADO hay Advanced Filter, đúng không? Cứ cho toàn bộ vùng ấy lên ListBox là được rồi
Hai Lúa test thử xem lọc 2 điều kiện xem ADO mất bao nhiêu thời gian
 
Upvote 0
Web KT

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

Back
Top Bottom