Giúp đỡ tìm kiếm theo dữ liệu nhập vào của người dùng. Cám ơn

nguoi_ham_hoc

Thành viên hoạt động
Tham gia ngày
1 Tháng hai 2017
Bài viết
125
Được thích
83
Điểm
180
Kính gửi các Anh, Chị GPE,
Mình có file Excel, trong đó mình nhập dữ liệu cho từng sheet, mỗi sheet tượng trưng cho 01 loại hồ sơ, mỗi sheet được cập nhật thường xuyên. File Excel này dùng để Mail Merge bên Word theo mẫu ISO để dán gáy hồ sơ theo yêu cầu của công ty đã đạt tiêu chuẩn ISO gì gì đó.
Bây giờ phát sinh ra là đồng nghiệp ở công ty đi tìm tài liệu đựng trong hồ sơ để photocopy hay scan gửi email cho sếp, v.v...
Hồ sơ mình lưu từ năm 2010 đến bây giờ rất là nhiều, nhiều loại hồ sơ, tìm 01 tập tài liệu trong nhiều hồ sơ của 01 loại hồ sơ (ví dụ : HM, ...) là cả ướt cả mồ hôi mẹ, lẫn mồ hôi con. Chính vì thế trong file đính kèm, mình có tạo thêm 01 sheet (tên là tim ho so).
Nay, mình mong các Anh, Chị giúp đỡ cho mình công thức hay code VBA để tìm kiếm theo dữ liệu nhập vào của người dùng.
Chân thành cám ơn.
 

File đính kèm

nguoi_ham_hoc

Thành viên hoạt động
Tham gia ngày
1 Tháng hai 2017
Bài viết
125
Được thích
83
Điểm
180
Các Anh, Chị GPE ơi,
Mình mong các Anh, Chị xem và giúp đỡ cho mình.
Chân thành cám ơn
 

be09

TNMT_Đồng Nai
Tham gia ngày
9 Tháng tư 2011
Bài viết
8,870
Được thích
8,549
Điểm
560
Tuổi
62
Nơi ở
Biên Hòa, Đồng Nai
Kính gửi các Anh, Chị GPE,
Mình có file Excel, trong đó mình nhập dữ liệu cho từng sheet, mỗi sheet tượng trưng cho 01 loại hồ sơ, mỗi sheet được cập nhật thường xuyên. File Excel này dùng để Mail Merge bên Word theo mẫu ISO để dán gáy hồ sơ theo yêu cầu của công ty đã đạt tiêu chuẩn ISO gì gì đó.
Bây giờ phát sinh ra là đồng nghiệp ở công ty đi tìm tài liệu đựng trong hồ sơ để photocopy hay scan gửi email cho sếp, v.v...
Hồ sơ mình lưu từ năm 2010 đến bây giờ rất là nhiều, nhiều loại hồ sơ, tìm 01 tập tài liệu trong nhiều hồ sơ của 01 loại hồ sơ (ví dụ : HM, ...) là cả ướt cả mồ hôi mẹ, lẫn mồ hôi con. Chính vì thế trong file đính kèm, mình có tạo thêm 01 sheet (tên là tim ho so).
Nay, mình mong các Anh, Chị giúp đỡ cho mình công thức hay code VBA để tìm kiếm theo dữ liệu nhập vào của người dùng.
Chân thành cám ơn.
Không cần theo dõi nhiều sheet vậy đâu, chỉ cần 3 sheet là đủ.

1/ 1 sheet làm Sheet Form để nhập liệu.

2/ 1 sheet theo dõi (chứa dữ liệu) từ Sheet Form nhập vào.

3/ 1 sheet truy vấn dữ liệu là xong.

Nhưng bạn nên đưa File với tiêu đề thật đang theo dõi lên đây (với khoảng 10 dòng dữ liệu thôi).
 

nguoi_ham_hoc

Thành viên hoạt động
Tham gia ngày
1 Tháng hai 2017
Bài viết
125
Được thích
83
Điểm
180
@Anh Be09 và các Anh, Chị ơi,
Mình đính kèm file đó là file dùng để Mail Merge bên Word (dùng Excel làm cơ sở dữ liệu), các sheet (như ST, HM, EV, S8, S5, NG, TN, ...) là các tên loại hồ sơ, dùng để làm gáy để bên ngoài bìa còng cho từng loại hồ sơ.
Công việc quản lý hồ sơ là của đồng nghiệp ở chỗ mình làm, mình thiết kế file Excel và dùng Mail Merge bên Word để làm giúp tờ giấy dán gáy hồ sơ cho đồng nghiệp. Bây giờ sếp kêu đồng nghiệp làm như thế nào để tìm cho nhanh tập tài liệu chứa trong bìa còng đựng từng loại hồ sơ nên mình mới nghĩ ra cách tạo thêm 1 sheet (đặt tên là tim ho so) (xin vui lòng xem file đính kèm) là như vậy đó.
Mình tài lanh, thương người giúp đồng nghiệp. Một phần mình thấy Excel hay hay, và diễn đàn giai phap excel rất là hữu ích, có các Anh, Chị ở diễn đàn biết rành về Excel, tận tình giúp đỡ mọi người như mình nên mình mới cầu mong sự giúp đỡ từ các Anh, Chị, các Thầy, Cô.
Mình chân thành mong các Thầy, Cô, các Anh, Chị giúp đỡ cho mình và đồng nghiệp.
Cám ơn rất nhiều.
 

nguoi_ham_hoc

Thành viên hoạt động
Tham gia ngày
1 Tháng hai 2017
Bài viết
125
Được thích
83
Điểm
180
Nếu anh be09 cần, thì ngày mai mình vào công ty, mình sẽ upload file Word dùng để Mail Merge lên để anh be09 xem luôn.
Trân trọng.
 

Hoang2013

Thành viên gắn bó
Tham gia ngày
15 Tháng tám 2013
Bài viết
1,625
Được thích
1,598
Điểm
560
Tuổi
6
Tên trang tính không nên dài quá như vậy;

PHP:
Sub TimHS()
 Dim Sh As Worksheet, Arr()
 Dim TL As String
 Dim Col As Byte, J As Long, Rws As Long, Cot As Byte
 
 Sheets("Tim HS").Select    '<=|'
 [b3].Value = "Nothing"
 Set Sh = ThisWorkbook.Worksheets([b1].Value)
 TL = "'" & [b2].Value
 Rws = Sh.[b1].CurrentRegion.Rows.Count
 Col = Sh.[b1].End(xlToRight).Column
 For Cot = 4 To Col Step 4
    Arr() = Sh.Cells(2, Cot).Resize(Rws, 2).Value
    For J = 1 To UBound(Arr())
        If "'" & Arr(J, 1) < TL And "'" & Arr(J, 2) > TL Then
            [b3].Value = "'" & Sh.Cells(J + 1, Cot - 1).Value
            Exit Sub
        End If
    Next J
 Next Cot
End Sub
 

be09

TNMT_Đồng Nai
Tham gia ngày
9 Tháng tư 2011
Bài viết
8,870
Được thích
8,549
Điểm
560
Tuổi
62
Nơi ở
Biên Hòa, Đồng Nai
Nếu anh be09 cần, thì ngày mai mình vào công ty, mình sẽ upload file Word dùng để Mail Merge lên để anh be09 xem luôn.
Trân trọng.
Nếu muốn quản lý hồ sơ lưu trữ thì nên theo cách tôi đã nêu ở bài 3, nhưng cấu trúc tiêu đề cần bổ sung nhiều thứ lắm, ví dụ:

- Mã số hồ sơ (cách đặt mã kết hợp các thứ) gồm: Tên kho, tủ, kệ, hộp, số hồ sơ.
- Tên hồ sơ.
- Danh mục của hồ sơ (liệt kê các loại văn bản có liên quan của 1 hồ sơ).
- Loại hồ sơ.
- Số hồ sơ.

Khi làm được khâu này xong thì việc tìm và đi lấy hồ sơ sẽ quá nhẹ nhàng.
 

nguoi_ham_hoc

Thành viên hoạt động
Tham gia ngày
1 Tháng hai 2017
Bài viết
125
Được thích
83
Điểm
180
@Hoang2013 : cám ơn anh Hoang nhiều lắm. Mình đã áp dụng được. Ban đầu code bị lỗi (vì sheet co tên là tim ho so, chứ không phải tim HS. nên mình đã sửa 01 chút chỗ đó.
@be09 : mình cám ơn lời góp ý của anh be09. Tuy nhiên đây là mẫu label của công ty đề ra để dán gáy hồ sơ nên đồng nghiệp của mình và mình không nghĩ ra đặt mã hồ sơ là như thế nào hết. Trên nhãn để dán gáy hồ sơ có thể hiện tên kho (HM, ST, EV, ...), số hồ sơ là số thứ tự rồi đó anh be09 ơi.
Một lần nữa, mình chân thành cám ơn 02 anh nhiều lắm luôn.
 

nguoi_ham_hoc

Thành viên hoạt động
Tham gia ngày
1 Tháng hai 2017
Bài viết
125
Được thích
83
Điểm
180
Anh Hoang2013 ơi,
Mình vừa thử tìm kết quả khác để tìm kiếm, thì không đúng rồi. Anh xem lại và giúp cho mình nhé.
Cám ơn anh.
P/S : mình xin đính kèm file Excel và file Word (cho anh be09 xem)
Các Anh, Chị ơi, mình bị quá quota rồi. Không thể tải file Excel lên được. Các Anh, Chị hướng dẫn mình làm thế nào để xóa các file đã tải lên để mình có đủ dung lượng 1 MB (không quá quota) nhé. Cám ơn.
 

File đính kèm

Hoang2013

Thành viên gắn bó
Tham gia ngày
15 Tháng tám 2013
Bài viết
1,625
Được thích
1,598
Điểm
560
Tuổi
6
Anh ơi, Mình vừa thử tìm kết quả khác để tìm kiếm, thì không đúng rồi. Anh xem lại và giúp cho mình nhé.
Kết quả khác là tìm cái gì, tìm ở trang nào,. . .

Chứ bạn nói trống trơ trống hoát vậy thì mùng thất mới giải quyết được vấn đề.
 

be09

TNMT_Đồng Nai
Tham gia ngày
9 Tháng tư 2011
Bài viết
8,870
Được thích
8,549
Điểm
560
Tuổi
62
Nơi ở
Biên Hòa, Đồng Nai
Các Anh, Chị ơi, mình bị quá quota rồi. Không thể tải file Excel lên được. Các Anh, Chị hướng dẫn mình làm thế nào để xóa các file đã tải lên để mình có đủ dung lượng 1 MB (không quá quota) nhé. Cám ơn.
Đăng nhập xong, click vào nút sửa bài, xong nhấn nút chuyển sang khung lớn, click vào nút tải File từ máy, xong nhấn nút Remove rồi tải lại File.

Nếu File dung lượng lớn thì xóa bớt dữ liệu đi cho mỗi sheet khoảng 10 dòng.
 

be09

TNMT_Đồng Nai
Tham gia ngày
9 Tháng tư 2011
Bài viết
8,870
Được thích
8,549
Điểm
560
Tuổi
62
Nơi ở
Biên Hòa, Đồng Nai
Khi xem xong File Word thì tôi đã hiểu, lấy dữ liệu và in mỗi dòng là 5 nhãn, sau đó in nhãn cho dòng kế tiếp theo cho đến hết 1 sheet, xong sang sheet khác in tiếp.
 

nguoi_ham_hoc

Thành viên hoạt động
Tham gia ngày
1 Tháng hai 2017
Bài viết
125
Được thích
83
Điểm
180
@Hoang2013 : anh ơi, để mai mình upload file Excel mà đã add code của anh, vào module và chạy Sub timHS cho anh xem kết quả. Vì file dung lượng quá lớn và trong topic này, diễn đàn thông báo bị quá quota nên mình diễn giải "chay", không có file để cho anh Hoang2013 hiểu hết. Mong anh thông cảm.
@be09 : anh ơi, bài 12 anh hiểu sai ý của mình nói rồi. Ở bài 1, mình có upload file excel lên, nhờ các Anh, Chị diễn đàn giúp đỡ, và đã được anh Hoang2013 hiểu và đã giúp mình bằng code VBA (nhưng chưa hoàn chỉnh, cần để cho anh Hoang2013 xem lại).
Cùng 01 thời điểm (19/4/2017), mình có đăng 02 topic lên diễn đàn nhờ các Anh, Chị giúp đỡ,
1/ Xin giúp đỡ Mail Merge .... cho hiệu quả hơn --> và đã được chị Lê Thị Hương (bây giờ chị Hương nói mình gọi là bạn) giúp đỡ.
2/ Giúp đỡ tìm kiếm theo dữ liệu nhập vào của người dùng --> và đã được anh Hoang2013 giúp đỡ code VBA.
Nội dung mình nhờ các Anh, Chị giúp đỡ ở topic thứ hai này : đồng nghiệp của mình bị ông sếp nói : sẽ có một số người tìm kiếm một số tài liệu trong các bìa còng hồ sơ. Mà các bìa còng hồ sơ thì dán thẳng đứng, chữ trên nhãn cũng bị xoay theo nên việc tìm kiếm thực tế sẽ gặp khó khăn (vì phải xoay cổ để đọc tựa đề nhãn dán trên bì hô sơ). Còn file Word mình mới upload lên đây để cho anh be09 xem để cho anh hiểu chiều của chữ nhãn dán thẳng đứng tìm kiếm thực tế sẽ gặp khó khăn (vì phải xoay cổ để đọc tựa đề nhãn dán trên bì hô sơ), làm cho việc Chính vì thế đồng nghiệp có nhờ mình giúp đỡ. Và mình đã lên diễn đàn này để cầu cứu các Anh, Chị ra tay nghĩa hiệp. Chắc là so mình diễn tả làm cho anh be09 hiểu sai ý của mình. Mong anh thông cảm.
Trân trọng.
 

be09

TNMT_Đồng Nai
Tham gia ngày
9 Tháng tư 2011
Bài viết
8,870
Được thích
8,549
Điểm
560
Tuổi
62
Nơi ở
Biên Hòa, Đồng Nai
.........................................
@be09 : anh ơi, bài 12 anh hiểu sai ý của mình nói rồi. Ở bài 1, mình có upload file excel lên, nhờ các Anh, Chị diễn đàn giúp đỡ, v.............
1/ Xin giúp đỡ Mail Merge .... cho hiệu quả hơn --> và đã được ..........
2/ Giúp đỡ tìm kiếm theo dữ liệu nhập vào của người dùng --> và đã được anh Hoang2013 giúp đỡ code VBA.
Nội dung mình nhờ các Anh, Chị giúp đỡ ở topic thứ hai này : đồng nghiệp của mình bị ông sếp nói : sẽ có một số người tìm kiếm một số tài liệu trong các bìa còng hồ sơ. ................ Chắc là do mình diễn tả làm cho anh be09 hiểu sai ý của mình. Mong anh thông cảm.
Trân trọng.
Tôi chỉ hiểu sai ý khi đọc tiêu đề so với nội dung bài 1.
Giúp đỡ tìm kiếm theo dữ liệu nhập vào của người dùng.
Từ tiêu đề này tôi mới góp ý bài 3, dùng sheet Form nhập liệu và truy vấn dữ liệu (bạn gọi theo Word là dùng Mail Merge) chỉ là cách gọi chứ chẳng có khác gì đâu.

Do bạn không theo dõi nên chẳng hiểu việc quản lý hồ sơ (chứ tôi thì quá rành), nên tôi có góp ý cụ thể ở bài 7.

Sau khi xem xong dữ liệu thì tôi mới góp ý bài 12.

Nếu bạn không tin thì cứ copy những nội dụng từ các bài tôi góp ý đê những đồng nghiệp của bạn khi đọc thì sẽ hiểu.

Bây giờ là góp ý thêm.

Cách theo dõi như File của bạn đưa lên là phản khoa học, nêu tôi theo dõi hồ sơ chỉ trên 1 sheet và tìm 1 hồ sơ/ 1
triệu hồ sơ chỉ 30 giây, chứ không phải tìm ướt cả mồ hôi mẹ, lẫn mồ hôi con như bạn đã nêu.


.
 
Lần chỉnh sửa cuối:

nguoi_ham_hoc

Thành viên hoạt động
Tham gia ngày
1 Tháng hai 2017
Bài viết
125
Được thích
83
Điểm
180
Chào anh Hoang2013, anh be09 và các Anh, Chị ở GPE,
Do mình upload file Excel (bài #1) mà đã add code VBA (của anh Hoang2013 của bài #6) lên cho anh Hoang2013 xem nhưng diễn đàn GPE thông báo quá quota. Mình đã làm theo cách của anh be09 để remove, nhưng không thấy nút remove luôn.
Trong code của anh Hoang2013, mình có hiệu chỉnh lại Sheets("Tim HS") trong code cho phù hợp với tên sheet thực tế là Tim ho so. Như vậy code là Sheets("Tim ho so").
Sau khi hiệu chỉnh, thì mình nhập liệu ở sheet tim ho so, ô B1 là HM, ô B2 là số 19422100, mình chạy Sub TimHS bằng cách bấm Alt+F8, thì chương trình hiện kết quả 061 ở ô B3 (kết quả là chuỗi, vì kết quả hiện bên trái của ô B3). So với thực tế ở sheet HM, thì tài liệu HM 19422100 đang nằm trong bìa hồ sơ có số thứ tự 812 (Excel ô G164) từ HM 19421862 (excel ô H164) đến HM 119422422. Như vậy thì chưa đúng anh Hoang2013 ơi. Mong anh tải file bài 1 và chạy code xem kết quả có đúng như mình nói không nhé (vì mình upload file lên diễn đàn GPE không được).
Để mình nói lài yêu cầu nhờ giúp đỡ để cho các Anh, Chị được rõ :
- Mình mong Anh, Chị giúp đỡ viết code VBA để tìm điều kiện người dùng nhập vào
- Người dùng sẽ nhập vào ô B1 là tên tương ứng (phải giống với tên của các sheet (SP, S5, S8, ST, HM, ....), nếu người dùng nhập không đúng thì code VBA chạy sẽ hiện thông báo "nhập liệu tại ô B1 không đúng".
- Người dùng sẽ nhập liệu ô B2 (có thể là số, có thể là chuỗi) là số tài liệu mà code sẽ thực hiện tìm kiếm giữa ô B1 và các sheet. Và kết quả sẽ trả về ô B3.
- Nếu không tìm ra thì hiện thông báo "số tài liệu bạn nhập vào chưa có trong tập hồ sơ trên & "dữ liệu ở ô B1" ".
Dạ , lưu ý, đồng nghiệp mình thường xuyên cập nhật các dữ liệu ở các sheet để dùng Mail Merge ở Word. Ở file Excel này, có bao nhiêu sheet thì có bấy nhiêu file Word dùng để Mail Merge (với tên file Word trùng tên với file sheet Excel) để dán gáy hồ sơ.
Mình biết trên GPE có nhiều Anh, Chị rất rành và giỏi về code VBA. Nhưng vì anh Hoang2013 đã giúp đỡ mình đầu tiên nên mình tôn trọng và mong anh Hoang2013 giúp mình tiếp nhé.
Nếu anh có rãnh chút thời gian, mong anh dành chút thời gian giúp đỡ cho mình và đồng nghiệp của mình.
Trân trọng cám ơn anh Hoàng, anh be09 và các Anh, Chị ở diễn đàn GPE này.
 

HieuCD

Chuyên gia GPE
Tham gia ngày
14 Tháng chín 2010
Bài viết
6,468
Được thích
12,124
Điểm
1,560
bạn chạy thử code
Mã:
Sub Tim_STT()
Dim Darr As Variant
On Error GoTo Thoat
Loai = [B1]
so = CLng([B2])
With Sheets(Loai)
  Darr = .Range("A1").CurrentRegion.Value
  For i = 2 To UBound(Darr)
    For j = 4 To UBound(Darr, 2) Step 4
      If CLng(Darr(i, j)) <= so And CLng(Darr(i, j + 1)) >= so Then
        [B3] = Darr(i, j - 1)
        Exit Sub
      End If
    Next j
  Next i
End With
Thoat:
MsgBox ("Du lieu nhap sai xem lai")
End Sub
 

nguoi_ham_hoc

Thành viên hoạt động
Tham gia ngày
1 Tháng hai 2017
Bài viết
125
Được thích
83
Điểm
180
Thân gửi các Thầy, Cô và các Anh, Chị ở GPE,
Trong khi chờ đợi được anh Hoang2013 giúp đỡ, thì mình may mắn được anh HieuCD giúp đỡ. Mình đã áp dụng liền và chạy ra kết quả như mong muốn. Mình và đồng nghiệp cám ơn anh HieuCD đã giúp đỡ.
Thân chào và chúc các Thầy, Cô, các Anh, Chị ở GPE ngày nghỉ cuối tuần với gia đình thật vui vẻ và mạnh khỏe.
Trân trọng.
 
Top Bottom