Tạo form bảng tìm kiếm

Liên hệ QC

soledad_90

Thành viên thường trực
Tham gia
12/1/10
Bài viết
250
Được thích
43
Giới tính
Nam
Em có file dữ liệu đính kèm trên đó là có thông số cần tìm kiếm .
Xin nhờ sự giúp đỡ của mọi người về viết lệnh và bảng tìm kiếm.
Mục đích là tìm kiếm nhanh chóng kịp thời,
Để có thể điền dữ liệu số lượng từng ngày nhập vào mỗi cột sau đó đối chiếu với số tổng đơn hàng, để biết được sự thừa / thiếu để điều chỉnh dữ liệu kịp thời

Xin cảm ơn mọi người!

1601971319808.png
 

File đính kèm

  • 201006_ Dữ liệu bảng tìm kiếm.xls
    1.9 MB · Đọc: 11
Thông tin bạn cần tìm là gì vậy (214704D/S111VNW/A3K=354 UC)?
 
Upvote 0
Mình không giúp được bạn bài này nhưng chỉ muốn hỏi bạn chỗ tiêu đề thôi:
Tạo from bảng tìm kiếm
=> có phải ý bạn là "Form" không?
 
Upvote 0
1./ Chuỗi lê thê vậy làm sao bạn nhớ cơ chứ?
Hay bạn có trước mắt/mặt chuỗi này?
Nếu không chuỗi có thì làm sao, nhập mò ư?
2./ Để áp dụng phương thức FIND() thì ta có thể bỏ trộn ô được không? NHững ô chứa trị tìm kiếm đang trộn & như thế làm phương thức sẽ chậm do tìm trong 1 cột sẽ nhanh hơn tìm trong tất cả các cột.
3./ Có thể lập danh sách duy nhất các chuỗi cần tìm đó & đưa vô ComboBox để làm nguồn dò tìm được không?
. . . . .
 
Upvote 0
1./ Chuỗi lê thê vậy làm sao bạn nhớ cơ chứ?
Hay bạn có trước mắt/mặt chuỗi này?
Nếu không chuỗi có thì làm sao, nhập mò ư?
2./ Để áp dụng phương thức FIND() thì ta có thể bỏ trộn ô được không? NHững ô chứa trị tìm kiếm đang trộn & như thế làm phương thức sẽ chậm do tìm trong 1 cột sẽ nhanh hơn tìm trong tất cả các cột.
3./ Có thể lập danh sách duy nhất các chuỗi cần tìm đó & đưa vô ComboBox để làm nguồn dò tìm được không?
. . . . .
Có thể lập danh sách duy nhất các chuỗi cần tìm đó & đưa vô ComboBox để làm nguồn dò tìm được không?
./ Đây là cách giải quyết vấn đề theo suy nghĩ của e ạ.
./ Nhưng khi đưa vô ComboBox thì khi phát sinh chuỗi mới ( chuỗi mới sẽ được thống kê nhập tay vào khi có phát sinh đơn hàng mới ) thì có tự update không ạ, hay sẽ phải làm lại từ đầu ạ ?

Chuỗi ký tự này sẽ phát sinh hàng ngày khi có nghiệp vụ nhập báo cáo từ nhân viên giao nhận ( sẽ được thống kê nhập tay từng ngày ) Do đó hoàn toàn không cần phải nhớ ạ.
Bài đã được tự động gộp:

Mình không giúp được bạn bài này nhưng chỉ muốn hỏi bạn chỗ tiêu đề thôi:
Tạo from bảng tìm kiếm
=> có phải ý bạn là "Form" không?
Dạ e đã thay đổi lại tiêu đề đúng nghĩa ạ .
 
Upvote 0
Có thể lập danh sách duy nhất các chuỗi cần tìm đó & đưa vô ComboBox để làm nguồn dò tìm được không?
./ Đây là cách giải quyết vấn đề theo suy nghĩ của e ạ.
./ Nhưng khi đưa vô ComboBox thì khi phát sinh chuỗi mới ( chuỗi mới sẽ được thống kê nhập tay vào khi có phát sinh đơn hàng mới ) thì có tự update không ạ, hay sẽ phải làm lại từ đầu ạ ?
Chuỗi ký tự này sẽ phát sinh hàng ngày khi có nghiệp vụ nhập báo cáo từ nhân viên giao nhận ( sẽ được thống kê nhập tay từng ngày ) Do đó hoàn toàn không cần phải nhớ ạ.
Sau 1 thời gian thử nghiệm file của bạn với chu trình sau:
(*) (Dùng macro) chép hết các mã hóa đơn lên 1 trang tính trống;
Tiếp theo cắt chỉ lấy 7 kí tự đầu của mã
Lập danh sách duy nhất của DS này, mình có kết quả như sau

MãRG
214704C
214704D
214704F
217383/
217386/
217513/
217998/
220598/
220601/
220661C
220703B
220748A
220748B
220748C
220769C
220780A
220780B
220780C
220781/
221004A
221195B
313827/

Mình cho rằng có thể xài DS này làm nguồn cho Combobox & kết quả tìm kiếm sẽ được thể hiện trên ListBox để bạn chọn 1 mã duy nhất (từ DS này)

(*) Chuyện cập nhật DS này có thể bằng 2 hay hơn các cách sau:
a./ Nhập bằng tay 7 ký tự của mã HĐ mới phát sinh
b./ Tự động hóa lập DS duy nhất này dựa trên CSDL khi mở trang tính hay mở file;
c./ . . . . .

(/ui khi được tiếp tục trao đổi cùng bạn!
 
Upvote 0

File đính kèm

  • 201006_ Dữ liệu bảng tìm kiếm.rar
    572.2 KB · Đọc: 18
Upvote 0
Phải thêm 1 cột phụ ghi nhận các "thông số cần tìm kiếm" rồi dùng AutoFilter để lọc.
Con cảm ơn sự phản hồi từ thầy ạ .
Cách thầy thêm 1 cột để đưa chuỗi tìm kiếm ra ngoài bằng VBA ( và rất tuyệt vời là khi thêm dữ liệu mới vào bảng thì đều có thể tự động cập nhật nhanh khi " bấm nút thần kỳ " là điều con chưa từng nghĩ ra trong quá trình làm việc .
Rất rất cảm ơn sự giải quyết vấn đề qua cách nhìn nhận này ạ.
Con xin gọi là thầy vì sự hiểu và cách thầy tư duy cho mỗi đề tài con đưa ra rất là thực tế và hiệu quả .
Bài đã được tự động gộp:

Sau 1 thời gian thử nghiệm file của bạn với chu trình sau:
(*) (Dùng macro) chép hết các mã hóa đơn lên 1 trang tính trống;
Tiếp theo cắt chỉ lấy 7 kí tự đầu của mã
Lập danh sách duy nhất của DS này, mình có kết quả như sau

MãRG
214704C
214704D
214704F
217383/
217386/
217513/
217998/
220598/
220601/
220661C
220703B
220748A
220748B
220748C
220769C
220780A
220780B
220780C
220781/
221004A
221195B
313827/

Mình cho rằng có thể xài DS này làm nguồn cho Combobox & kết quả tìm kiếm sẽ được thể hiện trên ListBox để bạn chọn 1 mã duy nhất (từ DS này)

(*) Chuyện cập nhật DS này có thể bằng 2 hay hơn các cách sau:
a./ Nhập bằng tay 7 ký tự của mã HĐ mới phát sinh
b./ Tự động hóa lập DS duy nhất này dựa trên CSDL khi mở trang tính hay mở file;
c./ . . . . .

(/ui khi được tiếp tục trao đổi cùng bạn!
./ Em cũng đã từng tách chuỗi này ra thành các cột như ý hiểu của a sẽ là 1 cột 214704D 1 cột S111ECW 1 cột 900 1 cột UC .
./ Nhưng khi tìm cũng sẽ rất là lâu khi cùng 1 cột 214704D sẽ có nhiều dòng Mã hàng và màu sắc khác nhau .
./ Sẽ ảnh hưởng rất lớn tới việc tìm kiếm khi file dữ liệu nên tới 10.000 dòng và hơn nữa .
./ Do đó e mới thiết kế lại là thành 1 chuỗi . khi tìm Ctrl+F rồi Paste cả chuỗi thì nó sẽ chỉ đích danh tới luôn chứ không cần tìm nhiều cột mới tới mục mình cần .
Em xin chia sẽ cách làm trước đây của bản thân ạ .
 
Lần chỉnh sửa cuối:
Upvote 0
./ Em cũng đã từng tách chuỗi này ra thành các cột như ý hiểu của a sẽ là 1 cột 214704D 1 cột S111ECW 1 cột 900 1 cột UC .
./ Nhưng khi tìm cũng sẽ rất là lâu khi cùng 1 cột 214704D sẽ có nhiều dòng Mã hàng và màu sắc khác nhau .
./ Sẽ ảnh hưởng rất lớn tới việc tìm kiếm khi file dữ liệu nên tới 10.000 dòng và hơn nữa .
./ Do đó e mới thiết kế lại là thành 1 chuỗi . khi tìm Ctrl+F rồi Paste cả chuỗi thì nó sẽ chỉ đích danh tới luôn chứ không cần tìm nhiều cột mới tới mục mình cần .
Em xin chia sẽ cách làm trước đây của bản thân ạ .
Chuỗi đó ở đâu mà bạn Paste ngon lành làm vậy, nó có hiễn hiện ngay trước mắt/mặt bạn không?
 
Upvote 0
Chuỗi đó ở đâu mà bạn Paste ngon lành làm vậy, nó có hiễn hiện ngay trước mắt/mặt bạn không?
Dạ như ở #6 e cũng có giải thích ạ.
Chuỗi ký tự này sẽ phát sinh hàng ngày khi có nghiệp vụ nhập báo cáo từ nhân viên giao nhận ( sẽ được thống kê nhập tay từng ngày ) Do đó hoàn toàn không cần phải nhớ ạ.
Chuỗi này sẽ phát sinh nhiều ngày khoảng từ (3-7 ngày ) tức sẽ có tới 7 lần mình phải đánh chuỗi này hàng ngày ạ .
Và sẽ hoàn toàn không báo trước là hôm sau sẽ có phát sinh chuỗi nào, tức là khi có nhận lúc đó mới biết là có : Nên bắt buộc mình phải nhập tay hàng ngày chuỗi này ạ .
 
Upvote 0
Tiếp theo thì ta xài phương thức FIND() mà tìm thôi;
Nếu nó duy nhất thì liệt kê cho bạn dòng mà nó đang chiếm hữu
Nếu không vậy thì hiện lên ListBox các dòng chứa chúng để bạn tùy chọn.
Nhưng khi áp dụng FIND() thì xài ô trộn như bạn sẽ là phí phạm thòi gian 1 cách vô ích; Chi bàng ta bỏ trộn đi; Mất đẹp 1 tí nhưng hiệu ứng công việc sẽ lẹ làng hơn.
(Bạn cần xác định thứ nào là con săn sắc, thứ nào là con cá rô)
 
Upvote 0
Tiếp theo thì ta xài phương thức FIND() mà tìm thôi;
Nếu nó duy nhất thì liệt kê cho bạn dòng mà nó đang chiếm hữu
Nếu không vậy thì hiện lên ListBox các dòng chứa chúng để bạn tùy chọn.
Nhưng khi áp dụng FIND() thì xài ô trộn như bạn sẽ là phí phạm thòi gian 1 cách vô ích; Chi bàng ta bỏ trộn đi; Mất đẹp 1 tí nhưng hiệu ứng công việc sẽ lẹ làng hơn.
(Bạn cần xác định thứ nào là con săn sắc, thứ nào là con cá rô)
" Chi bàng ta bỏ trộn đi; Mất đẹp 1 tí nhưng hiệu ứng công việc sẽ lẹ làng hơn. " Ý này của anh e chưa hình dung được ạ .
Anh có thể gửi hình ảnh cụ thể không ạ ?
Theo đúng tính thần 1 bài toán có nhiều lời giải ạ . Cách nào nhanh tróng ít thời gian tìm kiếm - hiệu suất công việc tốt ạ .
 
Upvote 0
" Chi bàng ta bỏ trộn đi; Mất đẹp 1 tí nhưng hiệu ứng công việc sẽ lẹ làng hơn. " (1) Ý này của anh e chưa hình dung được ạ .
Anh có thể gửi hình ảnh cụ thể không ạ ?
Theo đúng tính thần 1 bài toán có nhiều lời giải ạ . Cách nào nhanh tróng ít thời gian tìm kiếm - hiệu suất công việc tốt ạ .
Giả dụ dòng cuối của trang dữ liệu của bạn là Rws
Thì bạn chỉ cần Set vùng tìm kiếm là Rng = Range("C1:C" & Rws)
Nhưng nếu trộn khối ô như vậy lên bao nhiêu cột thì vùng tìm kiếm sẽ tăng lên bấy nhiêu lần & tốc độ vì thê sẽ giảm đi ngần ý lần.
(hiện tại bạn trộn 41-2 ô trong từng hàng, vị chi độ tăng /giảm sẽ là 41-2 lần)

Để đi được đến dòng chứa số hóa đơn cụ thể nào đó ta nên xài phương thức FIND(), tuy không nhanh bằng thứ khác, nhưng cho ta địa chị cụ thể để ta đến ngay được trên trang tính;
Tuy nhiên như vậy tính an toàn của CSDL bị đe dọa.

Muốn khỏi bị đe dọa ta trãi dữ liệu tìm thấy trên 1 Form, chỉnh sửa, bổ sung, . . . & sau hết là lưu lại trên trang tính
Cho nên không chỉ là việc tìm cho nhanh, mà sự an toàn của CSDL là trên hết.
. . . .
 
Upvote 0
Phải thêm 1 cột phụ ghi nhận các "thông số cần tìm kiếm" rồi dùng AutoFilter để lọc.
Con xin hướng dẫn thêm từ thầy tại mục tìm kiếm :
Chỉ cần tìm kiếm dạng chuỗi : Số đơn hàng/mã hàng/màu sắc ( 226142/S8113TW/A05 ) và ở dạng tìm kiếm rộng hơn là Số đơn hàng/mã hàng ( 226142/S8113TW )- là đã có thể lọc ra kết quả cần tìm kiếm
Chứ không phải là bắt buộc nhập chi tiết (226142/S8113TW/A05=312 Mỹ)

Con xin cảm ơn!
1615004103110.png
 

File đính kèm

  • 201006_ Dữ liệu bảng tìm kiếm - đối chiếu đơn hàng 2021 - hưởng.xlsm
    3 MB · Đọc: 10
Lần chỉnh sửa cuối:
Upvote 0
Web KT
Back
Top Bottom