[CHIA SẺ] Tìm kiếm và nhập liệu nâng cao - mã nguồn mở (1 người xem)

Liên hệ QC

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

langtuchungtinh360

Thành viên đã dừng hoạt động
Tham gia
7/10/13
Bài viết
1,062
Được thích
334
đi thẳng vào vấn đề luôn.
Chắc mọi người cũng không lạ lẫm gì với 2 Addins trích lọc và nhập liệu nâng cao tại 2 bài của 2 thành viên VIP của diễn đàn này
Nguyễn Duy Tuân, huuthang_bd (nhấn vào để đi đến bài viết)
---------------------
mình có tham khảo và cũng thấy được sự thuận tiện trong việc thao tác nhập liệu và trích lọc trong bảng tính
do cả 2 bài trên đều được mã hóa hết nên việc xem và tham khảo code là việc không thể hoặc khó khăn.
nay mình cũng bon chen viết 1 vài code với ý tưởng tương tự như thế.
hiện đã vừa hoàn thành, và mình test cũng thấy được nên mạn phép chia sẻ lên cho anh chị em cùng tham khảo nếu có ý định phát triển thêm có thể tích hợp vào chương trình của mình mà không phải cài nhiều Addins (file chia sẽ sẽ show code hết để mọi người có thể xem và tham khảo thuật toán)
trong quá trình test đứng ở phương diện là người viết nên mình không thể lường hết được các trường hợp phát sinh lỗi vẫn chưa thử hết các trường hợp.
nếu mọi người có tải và sử dụng thì nếu phát hiện lỗi nào, có thể bình luận về lỗi đó giúp mình để mình có thể chỉnh lại.
--------------------
tính năng:
+ dò tìm và nhập liệu nhanh, đối với dữ liệu lớn thì do viết bằng VBA nên có thể việc thể hiện tốc độ "bàn thờ" là không thể.
+ nếu cài đặt nhiều vùng nhập liệu thì khi chọn đúng vùng đó thì sẽ lọc ra dữ liệu tương ứng
+ có thể chèn cột, chèn dòng, xóa cột, xóa dòng ở cả bên bảng dữ liệu và bảng nhập liệu, chương trình sẽ tự động điều chỉnh phù hợp, trường hợp xóa luôn cả 1 vùng dữ liệu hoặc vùng nhập liệu thì tương ứng vùng đó sẽ không hoạt động nữa.
+ việc tìm kiếm không phân biệt chữ hoa, chữ thường
+ có thể tìm kiếm liên tục dữ liệu
+ có thể sắp xếp bảng dữ liệu theo alphabet sau khi lọc xong tạo thuận tiện cho việc xem.
+ nếu trong vùng nhập liệu có cả công thức ở giữa các cột nhập liệu thì khi nhập vào cũng không mất công thức
hạn chế:
+ Vì là lập trình VBA và phải sử lý nhiều lần để ra được kết quả tốt nhấn nên nếu dữ liệu nhiều sẽ xử lý chậm
--------------------
Link download 13h00
23/02/2017 (*)
--------------------
Chỉnh sửa lỗi và bổ xung so với File ban đầu (*)
+ chỉnh sửa lại các lỗi và bố trí lại bố cục + Chỉnh sửa Code Load và Lọc dữ liệu (bỏ chức năng Sort - do không biết cách tính giá trị)
+ bổ xung các hướng dẫn để dễ sử dụng, sửa lại code lọc dữ liệu không chính xác
+ sửa một số lỗi không chạy được code lọc dữ liệu ở bản cũ (khi làm việc với sheet này mà chuyển qua sheet khác thì code vẫn chạy nhưng không lọc được)
+ bổ xung thêm chức năng sort dữ liệu
+ bổ xung thêm các lọc duy nhất (lấy giá trị cuối hay giá trị đầu tiên)
+ sửa lại cách di chuyển list (bản cũ là chọn list chỗ nào cũng kéo được-> chỉ chọn dòng tiêu đề mới kéo đi được)
+ chỉnh sửa lại cách lọc duy nhất.
+ thêm tính năng dò tìm theo ngày tháng (list không hiển thị được dạng dd/mm/yyyy)
+ List hiển thị đúng như vùng data hiển thị trên trang tính (có thể hiển thị và điền vào đúng định dạng ngày tháng)
+ Sửa lại lỗi sắp xếp nhiều lần bị sai (nếu bảng dữ liệu có dữ liệu là chữ hay số trộn lẫn nhau)
Link download 10h30 04/03/2016

---------------------
Do mình cũng là "tay mơ" nên rất mong nhận được sự đóng góp và phản hồi từ mọi người
---------------------
ps: xin cảm ơn các thành viên đã giúp đỡ mình trong quá trình viết và test lỗi
winvista
kieumanh
ndu98061630
........
---------------------
Tham khảo một số code và ý tưởng
siwtom
ndu98061630
huuthang_bd
Nguyễn Duy Tuân
---------------------
 
Lần chỉnh sửa cuối:
Export ba mớ modules ra thành những file bas rồi đưa lên đây.
Phần mềm mã nguồn mở phải có khả năng gói gọn, tách rời được ra khỏi cái CSDL.
 
Upvote 0
Không biết cái này có chạy đc trên bản 64bit ko nhi? ☺
 
Upvote 0
đã cập nhật bản sửa đổi fix một số lỗi mình phát hiện ra, bổ xung thêm một số chức năng để dễ mọi người có thêm nhiều tùy chọn hơn, chi tiết xem tại #1
 
Upvote 0
Export ba mớ modules ra thành những file bas rồi đưa lên đây.
Phần mềm mã nguồn mở phải có khả năng gói gọn, tách rời được ra khỏi cái CSDL.

gửi file lên nó tiên hơn mà bác. ví dụ như người mới thì đâu biết cách nào dùng được (ví dụ như em hồi trước. tải file .bas về mà có biết làm gì để sử dụng được đâu. cuối cùng phải xóa)
 
Upvote 0
gửi file lên nó tiên hơn mà bác. ví dụ như người mới thì đâu biết cách nào dùng được (ví dụ như em hồi trước. tải file .bas về mà có biết làm gì để sử dụng được đâu. cuối cùng phải xóa)

Nếu ý của bạn là chia sẻ code thì tôi hoan nghênh. Và chỉ hoan nghênh thôi, không hơn không kém.

Vì bạn mạnh miệng nói nó là mã nguồn mở cho nên tôi hiểu lầm ý của bạn muốn tham khảo phê bình này nọ, và tôi chỉ muốn xem cách trình bày code. Nếu code không thể tách rời khỏi file thì tôi không cần xem tiếp. Chấm hết.

Việc bạn tải file bas về mà không xài được là do bạn tải những files có 1 hoặc cả 2 tính chất sau đây:
1. không có đủ chú thích (comments) để bạn hiểu mục điochs của code
2. người viết code dựa vào cấu trúc đặc thù của dữ liệu. Tức là code không uyển chuyển.

Nếu bạn muốn đi vào vết xe kia thì đó là quyền của bạn.
 
Upvote 0
Hii! mình test thử file thấy bảng tìm kiếm và nhập liệu không ở ngay ô chọn mà cách ô chọn xuống phía dưới một khoảng. Nếu bạn cho bảng nhập liệu ở gần ngay ô chọn thì tốt quá!-=.,,
anh 1.jpg
 
Lần chỉnh sửa cuối:
Upvote 0
Nếu ý của bạn là chia sẻ code thì tôi hoan nghênh. Và chỉ hoan nghênh thôi, không hơn không kém.

Vì bạn mạnh miệng nói nó là mã nguồn mở cho nên tôi hiểu lầm ý của bạn muốn tham khảo phê bình này nọ, và tôi chỉ muốn xem cách trình bày code. Nếu code không thể tách rời khỏi file thì tôi không cần xem tiếp. Chấm hết.

Việc bạn tải file bas về mà không xài được là do bạn tải những files có 1 hoặc cả 2 tính chất sau đây:
1. không có đủ chú thích (comments) để bạn hiểu mục điochs của code
2. người viết code dựa vào cấu trúc đặc thù của dữ liệu. Tức là code không uyển chuyển.

Nếu bạn muốn đi vào vết xe kia thì đó là quyền của bạn.
vâng!
em cảm ơn những góp ý từ bác. chắc là em dùng từ sai (cứ nghĩ không khóa là nói mã nguồn mở được- mà cái này cũng chả cao siêu gì nên cũng không nói là mã nguồn mở được) chắc dùng từ "mã mở" là đúng.
còn việc không dùng được file .bas chắc là bác hiểu nhầm ý em.
ý em là trước kia em chỉ biết tải file excel về có sẵn VBA mà dùng thôi. nên khi tải file .bas về thì ko biết dùng thế nào (tức là không biết thêm vào ấy)
ở đây ví dụ như người mới biết VBA muốn tham khảo thì không lẽ bắt người ta mò cách sử dụng. gửi file lên thì tiện hơn. tải về là biết dùng ngay. chế cháo gì thêm thì tùy.
đâu phải ai cũng có điều kiện được học VBA ở trường lớp hay trung tâm- như em thì là tự mò từng chữ. đâu phải cái nào cũng biết ý nghĩ, biết dùng đâu- đứng ở phương diện đó thì suy ra cũng có người sẽ như em. đâu phải chia sẻ lên là chỉ để cho những người biết dùng sử dụng. cả những người không biết cũng dùng được chứ.
ps: nếu BQT thấy em dùng từ không đúng thì có thể sửa lại giúp em. hoặc có thể xóa đi cho rồi. lý do chủ đề sai khác nội dung trình bày và bài viết không có ý nghĩa thực tiễn.+-+-+-+
 
Upvote 0
Hii! mình test thử file thấy bảng tìm kiếm và nhập liệu không ở ngay ô chọn mà cách ô chọn xuống phía dưới một khoảng. Nếu bạn cho bảng nhập liệu ở gần ngay ô chọn thì tốt quá!-=.,,
vâng
cảm ơn góp ý từ bạn
thế bạn muốn nó như thế nào?
bạn tải file cuối cùng về
nhấn ON
nhấn CÀI ĐẶT
tại dòng đầu (1)....(2)....(3).....(4)...... gì đó bạn chỉnh lại theo ý nhé, nhấn (?) để xem hướng dẫn
bạn tải file cuối cùng ở bài #1 nha
 
Upvote 0
Hị! khi mình test giả sử khi đánh một vài ký tự trên ô để dò tìm thì list trên bảng tìm kiếm và nhập liệu vẫn không thay đổi. Nếu đánh một vài chữ để dò tìm mà bảng list tìm kiếm và thay đổi theo chữ đánh thì tốt.
 
Upvote 0
Hị! khi mình test giả sử khi đánh một vài ký tự trên ô để dò tìm thì list trên bảng tìm kiếm và nhập liệu vẫn không thay đổi. Nếu đánh một vài chữ để dò tìm mà bảng list tìm kiếm và thay đổi theo chữ đánh thì tốt.
lý do thế này, vì file viết bằng vba nên tốc độ không nhanh được
nếu bạn muốn đánh 1 chữ thì nó lọc ngay thì khi đó mỗi khi bạn gõ thì nó sẽ xử lý rất chậm với dữ liệu nhiều
nên mình cài đặt là gõ xong thì enter thì nó sẽ tìm kiếm, và mỗi khi bạn gõ khoảng trắng thì nó cũng tìm. còn trong lúc bạn gõ các từ khác thì không chạy đâu.
đôi lời gửi đến bạn.
 
Upvote 0
lý do thế này, vì file viết bằng vba nên tốc độ không nhanh được
nếu bạn muốn đánh 1 chữ thì nó lọc ngay thì khi đó mỗi khi bạn gõ thì nó sẽ xử lý rất chậm với dữ liệu nhiều
nên mình cài đặt là gõ xong thì enter thì nó sẽ tìm kiếm, và mỗi khi bạn gõ khoảng trắng thì nó cũng tìm. còn trong lúc bạn gõ các từ khác thì không chạy đâu.
đôi lời gửi đến bạn.

OK! cám ơn bạn nhé!}}}}}
 
Upvote 0
Như mình nói ở bài 27 khi test thử file thấy bảng tìm kiếm và nhập liệu không ở ngay ô chọn đang đánh mà cách ô chọn xuống phía dưới một khoảng. Mình có vẽ mũi tên muốn kéo bảng nhập liệu đến sát ô excel đang đánh nhưở hinh đính kèm dưới đây là ô C4...
View attachment 172314
 
Lần chỉnh sửa cuối:
Upvote 0
Như mình nói ở bài 27 khi test thử file thấy bảng tìm kiếm và nhập liệu không ở ngay ô chọn đang đánh mà cách ô chọn xuống phía dưới một khoảng. Mình có vẽ mũi tên muốn kéo bảng nhập liệu đến sát ô excel đang đánh nhưở hinh đính kèm dưới đây là ô C4...

bạn chụp lại màn hình khi nhấn ON/CÀI ĐẶT cho mình xem
 
Upvote 0
...
ps: nếu BQT thấy em dùng từ không đúng thì có thể sửa lại giúp em. hoặc có thể xóa đi cho rồi. lý do chủ đề sai khác nội dung trình bày và bài viết không có ý nghĩa thực tiễn.+-+-+-+

Chả có gì để phải sửa xoá cả.
Tôi chỉ có ý định nhân dịp này nói chuyện về cách sắp xếp code thôi. Nhưng nếu không tiện thì dịp khác. Hết.

Chú: cách sắp xếp theo từng sub/fucntion, theo modules, và cách viết code portable (lưu động)
 
Upvote 0
Chả có gì để phải sửa xoá cả.
Tôi chỉ có ý định nhân dịp này nói chuyện về cách sắp xếp code thôi. Nhưng nếu không tiện thì dịp khác. Hết.

Chú: cách sắp xếp theo từng sub/fucntion, theo modules, và cách viết code portable (lưu động)
Em rất mong anh hướng dẫn về nội dung trên.

Và nhân tiện, anh hướng dẫn phần này nữa. Em ví dụ đoạn sau:
Mã:
Function fRNG(rng As Range) As Variant
If rng.Columns.Count > 1 Then Exit Function
Dim Dic As Object: Set Dic = CreateObject("Scripting.Dictionary")
Dim r As Long, tmp() As Variant
tmp = rng.Value
For r = 1 To UBound(tmp, 1)
    If tmp(r, 1) <> "" And Not Dic.Exists(tmp(r, 1)) Then
        Dic.Add tmp(r, 1), ""
    End If
Next r
fRNG = Dic.Keys
End Function
"... mỗi lần hàm chạy lại phải dựng một đối tượng (object), chạy xong rồi huỷ đi, rất phí. Nếu viết hàm sử dụng nhiều trên bảng tính thì cũng có thủ thuật chỉ dựng đối tượng 1 lần."
(Em trích dẫn bài viết của anh ở link này: bài #14)
 
Lần chỉnh sửa cuối:
Upvote 0
Em rất mong anh hướng dẫn về nội dung trên (1).

Và nhân tiện, anh hướng dẫn phần này nữa. (2)[/code]

(1) Chủ thớt từ chối đưa code lên. Tôi thì hiếm khi tải file xlsb, xlsm về. Hẹn dịp khác.

(2) Bạn mở một thớt khác. Ở đây là đề tài khác.
(gợi ý: dùng biến static, tôi đã ví dụ 1 vài lần rồi. Tuy nhiên code ví dụ của bạn có thể không nằm trong trường hợp này)
 
Upvote 0
(1) Chủ thớt từ chối đưa code lên. Tôi thì hiếm khi tải file xlsb, xlsm về. Hẹn dịp khác.

(2) Bạn mở một thớt khác. Ở đây là đề tài khác.
(gợi ý: dùng biến static, tôi đã ví dụ 1 vài lần rồi. Tuy nhiên code ví dụ của bạn có thể không nằm trong trường hợp này)

Cảm ơn anh.

Chúc anh một tối vui!
 
Upvote 0
(1) Chủ thớt từ chối đưa code lên. Tôi thì hiếm khi tải file xlsb, xlsm về. Hẹn dịp khác.

(2) Bạn mở một thớt khác. Ở đây là đề tài khác.
(gợi ý: dùng biến static, tôi đã ví dụ 1 vài lần rồi. Tuy nhiên code ví dụ của bạn có thể không nằm trong trường hợp này)


Mới nậu về Hơi phê Mình nói vậy nghe xem có trúng không nói trật xin bỏ qua

static = Biến khai báo với từ khoá Static vẫn lưu tiếp giá trị của nó ngay cả khi thủ tục chứa khai báo của nó đã kết thúc

Không biết dòng to màu xanh mình nói có trúng không...xin cảm ơn
 
Upvote 0
Web KT

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

Back
Top Bottom