Tìm kiếm nhanh trong drop down list

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

guri

Thành viên mới
Tham gia
18/7/23
Bài viết
4
Được thích
0
Xin chào a chị. em muốn tạo drop down list có gợi ý cho tất cả các ô ở cột C, D ở Sheet input here. Có cách nào khi mình kích vào nút xoả xuống nó sẽ hiện hộp thoại để mình gõ vào đó mặt hàng cần tìm cho nhanh hoặc mình chỉ cần gõ từ gợi ý nó sẽ hiện ra danh sách chứa từ gợi ý như trong nút search của filter không? Mọi người giúp em với, em cảm ơn nhiều.
Dữ liệu cột D sẽ lấy từ Sheet CD, cột C sẽ lấy của Sheet SP
 

File đính kèm

  • Nhap giay chung nhan.xlsm
    166.6 KB · Đọc: 10
Xin chào a chị. em muốn tạo drop down list có gợi ý cho tất cả các ô ở cột C, D ở Sheet input here. Có cách nào khi mình kích vào nút xoả xuống nó sẽ hiện hộp thoại để mình gõ vào đó mặt hàng cần tìm cho nhanh hoặc mình chỉ cần gõ từ gợi ý nó sẽ hiện ra danh sách chứa từ gợi ý như trong nút search của filter không? Mọi người giúp em với, em cảm ơn nhiều.
Dữ liệu cột D sẽ lấy từ Sheet CD, cột C sẽ lấy của Sheet SP
Dùng tạm cái này thử được không nhé bạn
 

File đính kèm

  • DANH MUC.xlsm
    783.2 KB · Đọc: 41
Dùng tạm cái này thử được không nhé bạn
cảm ơn bạn. cái này mình có thử sài qua rồi. mình lấy dữ liệu từ 2 sheet khác nhau trên 2 cột khác nhau của file nhập. nên cái này không áp dụng được á bạn. bạn xem qua file xem có cách nào khác không ? cảm ơn bạn
 
Xin chào a chị. em muốn tạo drop down list có gợi ý cho tất cả các ô ở cột C, D ở Sheet input here. Có cách nào khi mình kích vào nút xoả xuống nó sẽ hiện hộp thoại để mình gõ vào đó mặt hàng cần tìm cho nhanh hoặc mình chỉ cần gõ từ gợi ý nó sẽ hiện ra danh sách chứa từ gợi ý như trong nút search của filter không? Mọi người giúp em với, em cảm ơn nhiều.
Dữ liệu cột D sẽ lấy từ Sheet CD, cột C sẽ lấy của Sheet SP
Làm theo ý hiểu của bản thân.
Trong khi chờ đợi các giải pháp khác hãy thử xem cách này tôi vẫn thường làm (sử dụng 1 textbox và 1 listbox).
Sử dung: khi kích chuột vào 1 ô trong cột C hiện lên 1 textbox và 1 lisbox, gõ 1 ký tự gì đó vào Textbox listbox sẽ có điều mình cần , nhấn chuột chọn 1 dòng trong listbox==> ô active sẽ nhận giá trị của dòng listbox vừa chọn, đồng thời textbox và listbox biến mất.
P/s: Làm cách này sẽ tiện hơn và nhanh rất nhiều so với sử dụng Data validation (với list có rất rất nhiều dòng)
Đối với cột D làm tương tự.
Xem file
 

File đính kèm

  • Nhap giay chung nhan.xlsm
    184 KB · Đọc: 53
Làm theo ý hiểu của bản thân.
Trong khi chờ đợi các giải pháp khác hãy thử xem cách này tôi vẫn thường làm (sử dụng 1 textbox và 1 listbox).
Sử dung: khi kích chuột vào 1 ô trong cột C hiện lên 1 textbox và 1 lisbox, gõ 1 ký tự gì đó vào Textbox listbox sẽ có điều mình cần , nhấn chuột chọn 1 dòng trong listbox==> ô active sẽ nhận giá trị của dòng listbox vừa chọn, đồng thời textbox và listbox biến mất.
P/s: Làm cách này sẽ tiện hơn và nhanh rất nhiều so với sử dụng Data validation (với list có rất rất nhiều dòng)
Đối với cột D làm tương tự.
Xem file
Mình đã xem qua file và cảm ơn bạn đã hỗ trợ. Tuy nhiên textbox vẫn đang phân biệt chữ in hoa và chữ thường + chỉ hiện danh sách gợi ý theo chữ cái đầu của list. Bạn có cách nào tối ưu được cái vấn đề này không.
 
Mình đã xem qua file và cảm ơn bạn đã hỗ trợ. Tuy nhiên textbox vẫn đang phân biệt chữ in hoa và chữ thường + chỉ hiện danh sách gợi ý theo chữ cái đầu của list. Bạn có cách nào tối ưu được cái vấn đề này không.
Ý bạn là sao? chẳng phải là khi bạn cần tìm tên 1 mặt hàng (hay là tên công việc,....) nào đó thì bạn sẽ sẽ chữ đầu tiên xuất hiện trong đầu bạn vào hay là bạn gõ chữ khác nằm trong chuỗi. (ví dụ : có danh sách các công việc: đi làm, đi chơi, ăn trưa, Gọi điện cho bồ, gọi điện cho con, trả tiền điện..... thì khi cần gọi điện cho ai đó chẳng lẽ bạn lại Gõ chữ đ vào textbox tìm kiếm hay là gõ chữ G-Cái từ xuất hiện đầu tiên trong đầu bạn phải là chữ Gọi chứ không phải là điện, hay bồ, hay con.)
Tuy nhiên để làm theo ý bạn thì Thay code trong module2 bằng code này
Mã:
Option Explicit
Option Compare Text

Sub loc()
Dim DL(), i As Long

   DL = Sheets("SP").Range("B8:B550").Value
Sheet1.ListBox1.Clear
For i = 1 To UBound(DL)
   If DL(i, 1) <> "" Then
       If DL(i, 1) Like "*" & Sheet1.TextBox1.Value & "*" Then
         Sheet1.ListBox1.AddItem DL(i, 1)
      End If
   End If
Next
End Sub
Thực ra là thêm dòng Option Compare Text để không biệt chữ hoa chữ thường
và thêm "*" & vào dòng If DL(i, 1) Like Sheet1.TextBox1.Value & "*" Then... để tìm trong bất cứ đâu trong chuỗi.
 
Ý bạn là sao? chẳng phải là khi bạn cần tìm tên 1 mặt hàng (hay là tên công việc,....) nào đó thì bạn sẽ sẽ chữ đầu tiên xuất hiện trong đầu bạn vào hay là bạn gõ chữ khác nằm trong chuỗi. (ví dụ : có danh sách các công việc: đi làm, đi chơi, ăn trưa, Gọi điện cho bồ, gọi điện cho con, trả tiền điện..... thì khi cần gọi điện cho ai đó chẳng lẽ bạn lại Gõ chữ đ vào textbox tìm kiếm hay là gõ chữ G-Cái từ xuất hiện đầu tiên trong đầu bạn phải là chữ Gọi chứ không phải là điện, hay bồ, hay con.)
Tuy nhiên để làm theo ý bạn thì Thay code trong module2 bằng code này
Mã:
Option Explicit
Option Compare Text

Sub loc()
Dim DL(), i As Long

   DL = Sheets("SP").Range("B8:B550").Value
Sheet1.ListBox1.Clear
For i = 1 To UBound(DL)
   If DL(i, 1) <> "" Then
       If DL(i, 1) Like "*" & Sheet1.TextBox1.Value & "*" Then
         Sheet1.ListBox1.AddItem DL(i, 1)
      End If
   End If
Next
End Sub
Thực ra là thêm dòng Option Compare Text để không biệt chữ hoa chữ thường
và thêm "*" & vào dòng If DL(i, 1) Like Sheet1.TextBox1.Value & "*" Then... để tìm trong bất cứ đâu trong chuỗi.
cảm ơn bạn. mình mới tiếp xúc với VBA nên hơi gà mờ. Cho mình hỏi thêm chút. đối với cột D. mình làm tương tự nhưng trong 1 sheet không cho phép sử dụng 2 Private Sub Worksheet_SelectionChange(ByVal Target As Range) thì phải làm thế nào bạn
 
cảm ơn bạn. mình mới tiếp xúc với VBA nên hơi gà mờ. Cho mình hỏi thêm chút. đối với cột D. mình làm tương tự nhưng trong 1 sheet không cho phép sử dụng 2 Private Sub Worksheet_SelectionChange(ByVal Target As Range) thì phải làm thế nào bạn
Đặt điều kiện trong Private Sub Worksheet_SelectionChange ấy chứ: Nếu cột A thì làm gì, còn cột D thì làm gì. Đại khái thế.
 
cảm ơn bạn. mình mới tiếp xúc với VBA nên hơi gà mờ. Cho mình hỏi thêm chút. đối với cột D. mình làm tương tự nhưng trong 1 sheet không cho phép sử dụng 2 Private Sub Worksheet_SelectionChange(ByVal Target As Range) thì phải làm thế nào bạn
Như anh @Maika 8008 đã hướng dẫn bạn thử làm theo xem sao cụ thể:
Trong Worksheet_SelectionChange(ByVal Target As Range) có if not Intersec(target, range("C..:C...") is nothing then.....
Bạn copy từ IF not... đến end if và thay Chỗ range("B...:B...") thành range("D..:D..")
===>chạy thử.
 
Web KT
Back
Top Bottom