Tạo Form tìm kiếm và nhập liệu

Liên hệ QC
đây là bài làm của mình nội dung bêntrong không phải tiếng việt nên hơi khó hiểu,nếu khong hiểu có thể hỏi mình
mình đang bị vướng ở chỗ userform2 mình có áp dụng code của một bạn khác nhưng lại không ra kết quả
File của bạn toàn tiếng Tàu; Không biết bàn phím tiếng Tàu có khác gì bình thường không; Mình tưởng tượng Font tiếng Việt cũng phải phù hợp mới tìm kiếm được; Nên chưa rõ tiếng Tàu sẽ ra sao(?)
 
chào chủ thớt chào các bác các thầy trong diễn đàn,em cũng đang muốn mần form tìm kiếm như chủ thớt,và em muốn vô đây xem học hỏi kinh nghiệm,và nếu có câu hỏi thắc mắc thì có được bình luận không ạ?tất nhiên là e chủ xem và không làm ảnh hưởng đến bài của chủ thớt,chỉ là có thắc mắc thì e hỏi chứ sẽ ko đưa thẳng bài của mình lên topic của chủ thớt ạ
 
Thấy phù hợp với chủ đề thì hỏi tiếp; Nếu xa thì tạo bài đăng mới mà thảo luận thôi.

Chúc vui!
 
Thấy phù hợp với chủ đề thì hỏi tiếp; Nếu xa thì tạo bài đăng mới mà thảo luận thôi.

Chúc vui!
vâng à,cùng chủ đề với chủ thớt nhưng để không ảnh hưởng tới bài của chủ thớt thì e chỉ dám hỏi những cái liên quan tới bài của chủ thớt thôi ah, e muốn hỏi là nếu như danh sách tìm kiếm là nhiều điều kiện thì có khả thi không ạ?dựa vào ngày tháng,sau đó mới tìm tới tên khách hàng rồi mới lấy kết quả,thì có được không ạ?ở đây vì file mỗi ngày có tầm 3 4 nghìn dòng nên việc làm list theo hàng thì sẽ rất dài nên e chia ra các cột như thế này ạ
1591195140827.png
 
Mình xin phát thảo chi tiết chu trình của bạn xem nha, theo cách mình hiểu:
B1: Tìm trên toàn bộ các ô trong dòng tiêu đề chứa Ngày-tháng-năm; Xác định được cột chứa ngày cụ thể nào đó
B2: Tìm trong cột vừa tìm thấy tên người cần tìm
B3: Tìm sản lương của người vừa được tìm thấy (ở ô bên phải cùng dòng)

Với B1 ta có thể thực hiện bỡi:
a./ Phương thức Find()
b./ Cho tất cả dòng dữ liệu chứa tiêu đề ngày đó vô mảng (Array) & duyết từ đầu chí cuối để tìm ra cột chứa ngày cần tìm
(Ngoài 2 cách này có thể còn có cách khác, nhưng mình không quan tâm đến nữa)

Với B2 Nếu là mình thì thay vì nhập họ tên người mình sẽ nhập là mã (KH hay NV) trong 1 danh mục gồm tối thiểu 2 cột: [Mã . . . ] & [Họ & Tên]
Điều này tránh được lỗi chính tả ngớ ngẩn khi nhập liệu & cũng góp phần tăng tốc chút nào đó trong công cuộc tìm kiếm ở B2 này.

Cách thứ 2: (Với điều kiện thay vì nhập [Họ & Tên], ta xài [Mã. .]) là tìm [Mã ..] này trên toàn bộ vùng dữ liệu
Trong quá trình tìm kiếm này, ta đối chiếu cho từng kết quả tìm thấy để xác định ra ngày trùng với ngày cần tìm
(#4 có nêu cách mà mình tạo bộ mã cho 1 danh sách & đã được ứng dụng cho 1 danh sách hơn 5.000 HS; bạn có thể lưu ý tham khảo)

Tùy thuộc vào dữ liệu mà bạn xài con dao nào thích hợp để mổ xẻ vấn đề cho tối ưu
& chúc bạn thành công!
 
Mình xin phát thảo chi tiết chu trình của bạn xem nha, theo cách mình hiểu:
B1: Tìm trên toàn bộ các ô trong dòng tiêu đề chứa Ngày-tháng-năm; Xác định được cột chứa ngày cụ thể nào đó
B2: Tìm trong cột vừa tìm thấy tên người cần tìm
B3: Tìm sản lương của người vừa được tìm thấy (ở ô bên phải cùng dòng)

Với B1 ta có thể thực hiện bỡi:
a./ Phương thức Find()
b./ Cho tất cả dòng dữ liệu chứa tiêu đề ngày đó vô mảng (Array) & duyết từ đầu chí cuối để tìm ra cột chứa ngày cần tìm
(Ngoài 2 cách này có thể còn có cách khác, nhưng mình không quan tâm đến nữa)

Với B2 Nếu là mình thì thay vì nhập họ tên người mình sẽ nhập là mã (KH hay NV) trong 1 danh mục gồm tối thiểu 2 cột: [Mã . . . ] & [Họ & Tên]
Điều này tránh được lỗi chính tả ngớ ngẩn khi nhập liệu & cũng góp phần tăng tốc chút nào đó trong công cuộc tìm kiếm ở B2 này.

Cách thứ 2: (Với điều kiện thay vì nhập [Họ & Tên], ta xài [Mã. .]) là tìm [Mã ..] này trên toàn bộ vùng dữ liệu
Trong quá trình tìm kiếm này, ta đối chiếu cho từng kết quả tìm thấy để xác định ra ngày trùng với ngày cần tìm

Tùy thuộc vào dữ liệu mà bạn xài con dao nào thích hợp để mổ xẻ vấn đề cho thích hợp
& chúc bạn thành công!
bác dậy sớm quá,chúc bác ngày mới tốt lành!
1.qua tứ vấn của bác thì e đã quyết định ở hàng tiếu để ngày tháng năm thì em sẽ rút gọn lại bằng các mã ví dụ như Họ tên (1) 【ở đây 1 là chỉ ngày đầu tiên trong tháng,các số sẽ tăng dần cho đến ngày 31, em đổi vì đỡ phải dính vào dữ liệu ngày phức tạp em mò không ra】·
2.phần thứ 2 thì bác có gợi ý là dùng mã,cái này đúng là có mã bác,dạn ký tự la tinh và không dấu.thường em chỉ quan tâm tới mã đó và số lượng,còn tên khách hàng kia là em lấy ví dụ từ ví dụ của bác nữa,
chân thành cảm ơn bác đã góp ý! để e lên mạng mò ít kiếm thức về find.e mới bắt đầu học nên kiến thức còn kém quá
 
Với số liệu ghi lại Ngày-tháng-năm nhiều người trên diễn đàn này khuyên chúng ta nên nhập theo kiểu yyyy/mm/dd
(Nhưng với phương thức FIND() thì nó lại (chỉ) chịu dạng MM/DD/yyyy mà thôi; Tất nhiên trước khi tìm bỡi FIND() ta có thể đổi toàn bộ vùng số liệu kiểu ngày nào đó bất kỳ vê dạng MM/DD/yyyy. & sau công cuộc tìm kiếm ta có thể trả kiểu dữ liệu ngày-tháng-năm về dạng ban đầu (dạng mà người nhập liệu đang dùng))
Thân!
 
Với số liệu ghi lại Ngày-tháng-năm nhiều người trên diễn đàn này khuyên chúng ta nên nhập theo kiểu yyyy/mm/dd
(Nhưng với phương thức FIND() thì nó lại (chỉ) chịu dạng MM/DD/yyyy mà thôi; Tất nhiên trước khi tìm bỡi FIND() ta có thể đổi toàn bộ vùng số liệu kiểu ngày nào đó bất kỳ vê dạng MM/DD/yyyy. & sau công cuộc tìm kiếm ta có thể trả kiểu dữ liệu ngày-tháng-năm về dạng ban đầu (dạng mà người nhập liệu đang dùng))
Thân!
ở hàng tiêu đề dùng ngày tháng đấy e đã đổi thành ma (1).... để dễ dàng hơn trong tìm kiếm rồi ạ.em còn phải học hỏi nhiều ạ
 
Khoe với bạn là mình có viết 1 hàm thuận nghịch để đổi dữ liệu kiểu ngày-tháng-năm về dang YMD, ví dụ như sau:
J9A là mã của năm 2020, tháng 9 & ngày 10
KAB sẽ biểu thị ngày 11 tháng 10 năm tới
. . . .
& tất nhiên có hàm qui đổi ngược lại, khi cần biểu thị kiểu mm/dd/yyyy hay cách nào khác như dd/mm/yy,. . . .

Như vậy với CSDL như bạn thì dưới dòng ghi ngày, ta thêm 1 dòng để ghi chuỗi mã hòa ngày-tháng-năm ngay bên dòng trên.
 
vâng à,cùng chủ đề với chủ thớt nhưng để không ảnh hưởng tới bài của chủ thớt thì e chỉ dám hỏi những cái liên quan tới bài của chủ thớt thôi ah, e muốn hỏi là nếu như danh sách tìm kiếm là nhiều điều kiện thì có khả thi không ạ?dựa vào ngày tháng,sau đó mới tìm tới tên khách hàng rồi mới lấy kết quả,thì có được không ạ?ở đây vì file mỗi ngày có tầm 3 4 nghìn dòng nên việc làm list theo hàng thì sẽ rất dài nên e chia ra các cột như thế này ạ
Góp ý cho bạn:
1/ Cách theo dõi của bạn với ngày theo chiều ngang là không hợp lý. Không lẽ 1 năm có 365 ngày bạn theo dõi đến 730 cột.
2/ Nên có 1 danh mục khách hàng để lấy nó nhập liệu cho đồng nhất.
3/ Nên nhập liệu ngày và số lượng theo chiều dọc sẽ thuận tiện hơn, muốn tổng hợp như hình trên thì sử dụng PivotTable.
 
Góp ý cho bạn:
1/ Cách theo dõi của bạn với ngày theo chiều ngang là không hợp lý. Không lẽ 1 năm có 365 ngày bạn theo dõi đến 730 cột.
2/ . . .
3/ . . . . .
Nếu mỗi ngày bạn í có hơn 7OO khách hàng thì kiểu quản lý của bạn ý vẫn phù hợp ở khía cạnh nào đó; như chỉ quản trong 1 năm; Năm sau lập trang khác.
(. . . . ?)

Tác giả bài đăng chú ý là với 1 trang tính bao giờ số dòng người ta cũng thiết kế nhiều hơn số cột đó bạn, từ ngàn năm nay!

$$$$@
 
Góp ý cho bạn:
1/ Cách theo dõi của bạn với ngày theo chiều ngang là không hợp lý. Không lẽ 1 năm có 365 ngày bạn theo dõi đến 730 cột.
2/ Nên có 1 danh mục khách hàng để lấy nó nhập liệu cho đồng nhất.
3/ Nên nhập liệu ngày và số lượng theo chiều dọc sẽ thuận tiện hơn, muốn tổng hợp như hình trên thì sử dụng PivotTable.
cảm ơn bác góp ý,dữ liệu của bảng tính chỉ lưu giữ trong một tháng thôi ạ.là sẽ có hơn 30 cột,và một ngày như thế dữ liệu của mỗi cột là tầm 2 đến 3 nghìn dòng nên làm theo hàng thì sẽ rất là nhiều bác ạ
Bài đã được tự động gộp:

Nếu mỗi ngày bạn í có hơn 7OO khách hàng thì kiểu quản lý của bạn ý vẫn phù hợp ở khía cạnh nào đó; như chỉ quản trong 1 năm; Năm sau lập trang khác.
(. . . . ?)

Tác giả bài đăng chú ý là với 1 trang tính bao giờ số dòng người ta cũng thiết kế nhiều hơn số cột đó bạn, từ ngàn năm nay!

$$$$@
vâng,vì số lượng dòng ở mỗi ngày là nhiều nên em không muốn lập theo hàng,vì tới hết một tuần đã có gần mấy chục nghìn dòng rồi ạ
Bài đã được tự động gộp:

Khoe với bạn là mình có viết 1 hàm thuận nghịch để đổi dữ liệu kiểu ngày-tháng-năm về dang YMD, ví dụ như sau:
J9A là mã của năm 2020, tháng 9 & ngày 10
KAB sẽ biểu thị ngày 11 tháng 10 năm tới
. . . .
& tất nhiên có hàm qui đổi ngược lại, khi cần biểu thị kiểu mm/dd/yyyy hay cách nào khác như dd/mm/yy,. . . .

Như vậy với CSDL như bạn thì dưới dòng ghi ngày, ta thêm 1 dòng để ghi chuỗi mã hòa ngày-tháng-năm ngay bên dòng trên.
cách này có quá phức tạp không bác?vì trình độ em hơi yếu ạ
 
ở đây vì file mỗi ngày có tầm 3 4 nghìn dòng nên việc làm list theo hàng thì sẽ rất dài nên e chia ra các cột như thế này ạ

Bạn tự nghĩ cách thiết kế CSDL chưa chắc đúng.
1 ngày 5.000 dòng x 30 ngày = 150.000 dòng thì ăn thua gì với 1 sheet Excel.
Số cột nhiều mệt và còn làm "phức tạp" thêm các thao tác truy vấn dữ liệu "đơn giản" như Sort, Filter...
Hơn nữa cách thiết kế này còn làm phát sinh thêm nhiều dòng code không đáng có.
 
cảm ơn bác góp ý,dữ liệu của bảng tính chỉ lưu giữ trong một tháng thôi ạ.là sẽ có hơn 30 cột,và một ngày như thế dữ liệu của mỗi cột là tầm 2 đến 3 nghìn dòng nên làm theo hàng thì sẽ rất là nhiều bác ạ
vâng,vì số lượng dòng ở mỗi ngày là nhiều nên em không muốn lập theo hàng,vì tới hết một tuần đã có gần mấy chục nghìn dòng rồi ạ
cách này có quá phức tạp không bác?vì trình độ em hơi yếu ạ
1:= Trong 1 ngày dữ liệu có lặp lại cho 1 người hay không?
2:= Mình sẽ giả lập cho bạn 1 file làm trong 1 quí luôn, hứa trong tuần này xong để bạn trãi nghiệm
(*) Bạn cho biết CQ bạn có bao nhiêu người, để còn giả lập cho sát với thực tế bao nhiêu, tốt bấy nhiêu
 
1:= Trong 1 ngày dữ liệu có lặp lại cho 1 người hay không?
2:= Mình sẽ giả lập cho bạn 1 file làm trong 1 quí luôn, hứa trong tuần này xong để bạn trãi nghiệm
(*) Bạn cho biết CQ bạn có bao nhiêu người, để còn giả lập cho sát với thực tế bao nhiêu, tốt bấy nhiêu
Vâng ạ. Trong một ngày thì không có sự trùng lặp. Thường thì số liệu thống kê theo ngày. Mỗi ngày sẽ có tầm 3 nghìn dòng. Tức là gần 3 nghìn người. Giữa các ngày có sự trùng lặp nhưng trong một ngày thì không có sự trùng lặp
Bài đã được tự động gộp:

Va
Bạn tự nghĩ cách thiết kế CSDL chưa chắc đúng.
1 ngày 5.000 dòng x 30 ngày = 150.000 dòng thì ăn thua gì với 1 sheet Excel.
Số cột nhiều mệt và còn làm "phức tạp" thêm các thao tác truy vấn dữ liệu "đơn giản" như Sort, Filter...
Hơn nữa cách thiết kế này còn làm phát sinh thêm nhiều dòng code không đáng có.
thực ra là còn nhiều bất cập đấy ạ. Vù thế nên em lên diễn đàn mong mọi người góp ý
Bài đã được tự động gộp:

Nh
1:= Trong 1 ngày dữ liệu có lặp lại cho 1 người hay không?
2:= Mình sẽ giả lập cho bạn 1 file làm trong 1 quí luôn, hứa trong tuần này xong để bạn trãi nghiệm
(*) Bạn cho biết CQ bạn có bao nhiêu người, để còn giả lập cho sát với thực tế bao nhiêu, tốt bấy nhiêu
ở cột số lượng thì khá quan trọng bác ạ. Ví dụ ở ngày mồng 1 ông A có số lượng là 56 ngày. mồng 2 lại có ông A nhưng số lượng là 78. Vì số lượng khá là quan trọng nên lúc đầu e nghĩ truy vấn tìm ngày trước sau đó mới dò tới mã hoặc tên vì sợ dò ra kết quả sai ạ
 
Lần chỉnh sửa cuối:
File của bạn toàn tiếng Tàu; Không biết bàn phím tiếng Tàu có khác gì bình thường không; Mình tưởng tượng Font tiếng Việt cũng phải phù hợp mới tìm kiếm được; Nên chưa rõ tiếng Tàu sẽ ra sao(?)
font của minh viết bang tieng nhật nhưng mình nghĩ chắc font chữ ko ảnh hưởng gì đâu ah
 
. . . Trong một ngày thì không có sự trùng lặp. Thường thì số liệu thống kê theo ngày. Mỗi ngày sẽ có tầm 3 nghìn dòng. Tức là gần 3 nghìn người.
ở cột số lượng thì khá quan trọng bác ạ. Ví dụ ở ngày mồng 1 ông A có số lượng là 56 ngày. mồng 2 lại có ông A nhưng số lượng là 78. Vì số lượng
Bạn thử thao tác & kiểm theo Form kết quả:
 

File đính kèm

  • Tìm SL KH.xlsm
    359.1 KB · Đọc: 65
Bạn tự nghĩ cách thiết kế CSDL chưa chắc đúng.
1 ngày 5.000 dòng x 30 ngày = 150.000 dòng thì ăn thua gì với 1 sheet Excel.
Số cột nhiều mệt và còn làm "phức tạp" thêm các thao tác truy vấn dữ liệu "đơn giản" như Sort, Filter...
Hơn nữa cách thiết kế này còn làm phát sinh thêm nhiều dòng code không đáng có.
Bao giờ bạn tìm được một người chịu nghe theo cách thiết kế CSDL chuẩn thì báo cho tôi biết. Tôi thết bạn một chầu phở.
Nếu không có câu "nhưng mà trường hợp của em đặc biệt..." thì không phải GPE. :p
 
Web KT
Back
Top Bottom