Hỏi: Tạo list danh sách sổ xuống theo điều kiện!! (1 người xem)

Liên hệ QC

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

thanhquangauh

Thành viên chính thức
Tham gia
22/9/13
Bài viết
60
Được thích
2
Chào GPE! e có 2 sheet: dulieu và timkiem.
Tại sheet dulieu có 3 cột: cột Tên Khách Hàng; cột Sản Phẩm và cột Xếp Loại
Tại sheet timkiem có 3 ô: E4; E5 và E6
Trong đó:
Ô E4 là ô list danh sách sổ xuống ứng với tên khách hàng.
Ô E5 là ô list danh sách sổ xuống ứng với sản phẩm.
Ô E6 là ô tìm dữ liệu xếp loại ứng với tên khách hàng và sản phẩm.
Câu hỏi:
Nhờ diễn đàn giúp e:
Tại ô E4 tạo 1 list danh sách tên khách hàng để lựa chọn (điều kiện là: do cột tên khách hàng có nhiều ô trùng tên nên khi tạo list danh sách thì không cho trùng tên chỉ để tên duy nhất).
Tại ô E5 tạo 1 list danh sách sản phẩm để lựa chọn (điều kiện là: khi tên khách hàng nào thì tạo list ứng với tên sản phẩm đó và tên sản phẩm cũng không được trùng chỉ để tên duy nhất điển hình).
Tại ô E6 tạo hàm tìm kiếm xếp loại ứng với tên khách hàng và sản phẩm.
Hình ảnh minh họa:
dulieu1.JPGtimkeim5.JPG
Ví dụ:
bâm vào ô E4: tạo ra danh sách3.JPG;bấm vào ô E5: tạo ra danh sách4.JPG(lưu ý là list danh sách là không trùng)
CHÂN THÀNH CẢM ƠN RẤT NHIỀU...
 

File đính kèm

Chào GPE! e có 2 sheet: dulieu và timkiem.
Tại sheet dulieu có 3 cột: cột Tên Khách Hàng; cột Sản Phẩm và cột Xếp Loại
Tại sheet timkiem có 3 ô: E4; E5 và E6
Trong đó:
Ô E4 là ô list danh sách sổ xuống ứng với tên khách hàng.
Ô E5 là ô list danh sách sổ xuống ứng với sản phẩm.
Ô E6 là ô tìm dữ liệu xếp loại ứng với tên khách hàng và sản phẩm.
Câu hỏi:
Nhờ diễn đàn giúp e:
Tại ô E4 tạo 1 list danh sách tên khách hàng để lựa chọn (điều kiện là: do cột tên khách hàng có nhiều ô trùng tên nên khi tạo list danh sách thì không cho trùng tên chỉ để tên duy nhất).
Tại ô E5 tạo 1 list danh sách sản phẩm để lựa chọn (điều kiện là: khi tên khách hàng nào thì tạo list ứng với tên sản phẩm đó và tên sản phẩm cũng không được trùng chỉ để tên duy nhất điển hình).
Tại ô E6 tạo hàm tìm kiếm xếp loại ứng với tên khách hàng và sản phẩm.
Hình ảnh minh họa:
dulieuView attachment 113595timkeimView attachment 113596
Ví dụ:
bâm vào ô E4: tạo ra danh sáchView attachment 113597;bấm vào ô E5: tạo ra danh sáchView attachment 113598(lưu ý là list danh sách là không trùng)
CHÂN THÀNH CẢM ƠN RẤT NHIỀU...
Viết lại tý hông thôi quên bài hết
Làm theo dữ liệu giả định trong bài, nếu có sai thì...........làm lại
Thân
 

File đính kèm

Upvote 0
Viết lại tý hông thôi quên bài hết
Làm theo dữ liệu giả định trong bài, nếu có sai thì...........làm lại
Thân
Cảm ơn anh, rất đúng anh ak...nhưng tại ô E6 là công thức tìm kiếm(vlookup,match& index,...) luôn anh ak(hiện kết quả luôn) không cần lựa chọn nữa!
Với cho em hỏi thêm: nếu như em mở trang khác và cũng có dữ liệu tương tự, và muốn làm theo cái của anh,nhưng làm sao để kích hoạt cho "Worksheet_Activate" và "Worksheet_Change" hoạt động giống như bài của anh ạ.
Chân thành cảm ơn anh!!
 
Upvote 0
Cảm ơn anh, rất đúng anh ak...nhưng tại ô E6 là công thức tìm kiếm(vlookup,match& index,...) luôn anh ak(hiện kết quả luôn) không cần lựa chọn nữa!
Với cho em hỏi thêm: nếu như em mở trang khác và cũng có dữ liệu tương tự, và muốn làm theo cái của anh,nhưng làm sao để kích hoạt cho "Worksheet_Activate" và "Worksheet_Change" hoạt động giống như bài của anh ạ.
Chân thành cảm ơn anh!!
Bạn click phải vào sheet tương tự với sheet "timkiem" trong file này, chọn ViewCode, dán 2 code này vào, sửa lại các địa chỉ ( nếu có thay đổi) cho phù hợp
Làm xong rồi pha ly cà- phê thưởng thức thành quả của bạn, nếu hổng chạy hoặc chạy mà cóc theo ý muốn thì lại.............gởi bài lên tiếp
Nếu [E6] không cần tạo Vali thì thay code này cho code cũ:
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Vung, I, SanPham, XepLoai
    Vung = Sheets("dulieu").Range(Sheets("dulieu").[A15], Sheets("DULIEU").[A50000].End(xlUp)).Resize(, 3)
        If Target.Address = "$E$4" Then
            For I = 1 To UBound(Vung)
                If Target = Vung(I, 1) Then
                    SanPham = IIf(InStr(SanPham, Vung(I, 2) & ","), SanPham, SanPham & Vung(I, 2) & ",")
                End If
            Next I
                With Target.Offset(1).Validation
                    .Delete
                    .Add xlValidateList, , , SanPham
                End With
        End If
End Sub
Thân
 
Upvote 0
Đây là trường hợp của mình, khá khó, nhưng chỉ có các chuyên gia GPE mới làm dc

trường hợp của mình cũng tương tự như trên, như vì trình độ excel tệ quá nên không bắt chước mà làm theo dc

Nên đành phải nhờ các cao thủ làm giúp thôi
Mình muốn 1 công cụ tìm kiếm giống như các trang rao vặt bđs.
Cụ thể mình đã viết ở trong file, không có virut, excel 2007.
xin cảm ơn
 

File đính kèm

Upvote 0
Bạn ơi cho mình hỏi, nếu muốn hiển thị theo hàng thì phải sửa sao vậy nhỉ. Mình sửa đoạn code này nhưng nó không chạy theo
With Target.Offset(1).Validation
.Delete
.Add xlValidateList, , , SanPham
End With

Cám ơn và hi vọng bạn giúp đỡ
 

File đính kèm

Upvote 0
Bạn ơi cho mình hỏi, nếu muốn hiển thị theo hàng thì phải sửa sao vậy nhỉ. Mình sửa đoạn code này nhưng nó không chạy theo


Cám ơn và hi vọng bạn giúp đỡ
Hình như yêu cầu của bạn không giống với yêu cầu của chủ topic này, bạn có thể nói rõ ý định của bạn thì mới biết đường mà giúp
Thân
 
Upvote 0
Cũng giống như của chủ Topic, file mình đang làm cho phép chọn Tỉnh thì combobox huyện sẽ theo tỉnh và xã sẽ theo huyện
 
Upvote 0
Nhờ các anh giúp đỡ với, đang cần gấp mà không làm được. Chân thành cám ơn
 
Upvote 0
Tiện thể cho mình hỏi tại cột tỉnh B3:B; cột huyện D3:D; Cột xã C3:C thì đổi công thức như thế nào ?
 
Upvote 0
Upvote 0
Bạn nào giúp mình trường hợp này với ạ.
Cảm ơn các bạn rất nhiều !
 
Upvote 0
Bạn nào giúp mình trường hợp này với ạ.
Cảm ơn các bạn rất nhiều !

Mình dựa vào code của bác concogia để viết cho trường hợp của bạn đây. :-=

Bạn để ý: tại sheet Ket Qua: cột danh mục, chủng loại chỉ được cập nhật khi hệ Profile thay đổi.

Mã:
Private Sub Worksheet_Activate()
    Dim Vung, I, d, rng As Range
    Set d = CreateObject("scripting.dictionary")
    Vung = Sheets("BangThamChieu").Range(Sheets("BangThamChieu").[A2], Sheets("BangThamChieu").[A100].End(xlUp)).Resize(, 3)
        For I = 1 To UBound(Vung)
            If Not d.exists(Vung(I, 1)) Then d.Add Vung(I, 1), ""
        Next I
                
        [COLOR=#ff0000]For Each rng In Range("A2:A10")[/COLOR]
            With rng.Validation
                .Delete
                .Add xlValidateList, , , Join(d.keys, ",")
            End With
        Next
End Sub

Mình chỉ cài Valadation cho vùng từ A2:A10, bạn có thể thay đổi theo ý muốn.
Link MediaFire: BGM_Test17-01 (1)
 
Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn bạn nhiều vì đã giúp đỡ. Nhưng bạn ơi hình như vẫn chưa theo đúng ý của mình.
Ý của mình muốn nó sẽ chạy như sau: Sau khi chọn Profile sẽ chọn tiếp Danh mục cửa sau đó sẽ chọn tiếp Chủng loại cửa theo như danh mục cửa.
Ví dụ như: Mình chọn Profile và danh mục cửa đi xong bên kia sẽ cho chọn hàng loạt các loại cửa đi và cũng tương tự như cửa sổ và vách kính.
Cảm ơn bạn nhiều !
 
Upvote 0
Cảm ơn bạn nhiều vì đã giúp đỡ. Nhưng bạn ơi hình như vẫn chưa theo đúng ý của mình.
Ý của mình muốn nó sẽ chạy như sau: Sau khi chọn Profile sẽ chọn tiếp Danh mục cửa sau đó sẽ chọn tiếp Chủng loại cửa theo như danh mục cửa.
Ví dụ như: Mình chọn Profile và danh mục cửa đi xong bên kia sẽ cho chọn hàng loạt các loại cửa đi và cũng tương tự như cửa sổ và vách kính.
Cảm ơn bạn nhiều !

File mình đã gửi đúng với yêu cầu của bạn. Khi mở file, bạn phải kích hoạt Macro thì mới có tác dụng. :-=

Bạn thay đổi địa chỉ dòng For Each rng In Range("A2:A10") tại Worksheet_Activate thành
For Each rng In Range("A2:A100") rồi test xem?

Sau khi chỉnh xong bạn chọn sheet BangThamChieu xong rồi trở lại sheet Ket Qua để cho sự kiện Worksheet_Activate nó update list mới nhất.
 
Upvote 0
File mình đã gửi đúng với yêu cầu của bạn. Khi mở file, bạn phải kích hoạt Macro thì mới có tác dụng. :-=

Bạn thay đổi địa chỉ dòng For Each rng In Range("A2:A10") tại Worksheet_Activate thành
For Each rng In Range("A2:A100") rồi test xem?

Sau khi chỉnh xong bạn chọn sheet BangThamChieu xong rồi trở lại sheet Ket Qua để cho sự kiện Worksheet_Activate nó update list mới nhất.
!$@!! Không được bạn àh. Mình test hoài cũng không đúng. Kết quả của mình mong muốn nó chỉ trên 1 hàng thui bạn ơi.
Để mình ví dụ cụ thể như này:
Sau khi mình chọn Profile SHIDE cột bên sẽ cho chọn 3 loại Cửa đi, cửa sổ, vách kính. Sau khi mình chọn Cửa đi cột bên nữa cho mình chọn các loại cửa đi ( khá nhiều loại nhưng không cần cửa sổ or vách kính). Cũng tương tự như khi mình chọn cửa sổ cũng sẽ hiện ra toàn bộ cửa sổ chứ không hiện cửa đi hay vách kính nữa....
Cảm ơn bạn nhiệt tình giúp đỡ !
 
Upvote 0
!$@!! Không được bạn àh. Mình test hoài cũng không đúng. Kết quả của mình mong muốn nó chỉ trên 1 hàng thui bạn ơi.
Để mình ví dụ cụ thể như này:
Sau khi mình chọn Profile SHIDE cột bên sẽ cho chọn 3 loại Cửa đi, cửa sổ, vách kính. Sau khi mình chọn Cửa đi cột bên nữa cho mình chọn các loại cửa đi ( khá nhiều loại nhưng không cần cửa sổ or vách kính). Cũng tương tự như khi mình chọn cửa sổ cũng sẽ hiện ra toàn bộ cửa sổ chứ không hiện cửa đi hay vách kính nữa....
Cảm ơn bạn nhiệt tình giúp đỡ !

ah hiểu ý bạn rồi. --=0, bạn xem lại file này.

Mình mới thêm đoạn này vào Private Sub Worksheet_Change(ByVal Target As Range)

Mã:
If Target.Column = 2 Then
            For I = 1 To UBound(Vung)
                If Target.Offset(0, -1) = Vung(I, 1) And Target.Value = Vung(I, 2) Then
                    Cloai = IIf(InStr(Cloai, Vung(I, 3) & ","), Cloai, Cloai & Vung(I, 3) & ",")
                End If
            Next I
                
            With Target.Offset(0, 1).Validation
                .Delete
                .Add xlValidateList, , , Cloai
            End With
        End If
Link MediaFire: BGM_Test17-01 (2)
 
Lần chỉnh sửa cuối:
Upvote 0
ah hiểu ý bạn rồi. --=0, bạn xem lại file này.

Mình mới thêm đoạn này vào Private Sub Worksheet_Change(ByVal Target As Range)

Mã:
If Target.Column = 2 Then
            For I = 1 To UBound(Vung)
                If Target.Offset(0, -1) = Vung(I, 1) And Target.Value = Vung(I, 2) Then
                    Cloai = IIf(InStr(Cloai, Vung(I, 3) & ","), Cloai, Cloai & Vung(I, 3) & ",")
                End If
            Next I
                
            With Target.Offset(0, 1).Validation
                .Delete
                .Add xlValidateList, , , Cloai
            End With
        End If
Huhu. :., không phải bạn ơi. Trong Sheet KetQua mình chỉ cần có 1 hàng thui chứ không phải nhiều hàng như vậy :.,
 
Upvote 0
Huhu. :., không phải bạn ơi. Trong Sheet KetQua mình chỉ cần có 1 hàng thui chứ không phải nhiều hàng như vậy :.,

Mình giải thích thêm 1 lần nữa :-=

Cách hoạt động của sheet Ketqua:

- Đầu tiên bạn chọn 1 giá trị của cột Profile.
- Tiếp tục bạn chọn cột Danh mục thì nó show 1 list Danh mục thuộc giá trị Profile mà bạn đã chọn (các danh mục này ứng với hệ Profile đã có bên sheet BangThamChieu)
- Sau khi nhập xong cột Danh mục, chọn tiếp cột Chủng loại -> nó lọc ra các chủng loại thuộc hệ Profile và Danh mục đã cài bên sheet BangThamChieu.
 
Upvote 0
Mình giải thích thêm 1 lần nữa :-=

Cách hoạt động của sheet Ketqua:

- Đầu tiên bạn chọn 1 giá trị của cột Profile.
- Tiếp tục bạn chọn cột Danh mục thì nó show 1 list Danh mục thuộc giá trị Profile mà bạn đã chọn (các danh mục này ứng với hệ Profile đã có bên sheet BangThamChieu)
- Sau khi nhập xong cột Danh mục, chọn tiếp cột Chủng loại -> nó lọc ra các chủng loại thuộc hệ Profile và Danh mục đã cài bên sheet BangThamChieu.
Hix. Mình hiểu í bạn nói cũng như cách hoạt động, nhưng cái VBA hình như không đúng theo ý của mình :( Bạn có thể viết lại VBA cho mình được không?
Cảm ơn bạn nhiều !
 
Upvote 0
Hix. Mình hiểu í bạn nói cũng như cách hoạt động, nhưng cái VBA hình như không đúng theo ý của mình :( Bạn có thể viết lại VBA cho mình được không?
Cảm ơn bạn nhiều !

Vậy bạn nói rõ xem yêu cầu thế nào và kết quả ra sao? càng chi tiết càng tốt + file hoặc hình ảnh kèm theo (nếu có).
 
Upvote 0
Upvote 0
chào bạn..nó rất đơn giản bạn à, thấy mấy bác kia xài toàn code, mình thì chưa từng học qua VBA bao giờ
- bạn làm thế này, bạn tạo riêng danh sách cho 1 sheet mới, bạn quét chọn toàn bộ cột hay hàng cho danh sách đó rồi kích chuột phải chọn "name a range " bạn đặt tên là ds viết tắt của danh sách chẳng hạn, hay bất kì tên nào bạn muốn, nhưng có 1 điều là tên không được chứa kí tự số. bạn phải nhớ cái tên bạn vừa đặt.
- Tiếp theo bạn chọn 1 ô nào đó mà bạn muốn đặt list cho danh sách, bạn vào data trên thanh công cụ (cho excel 2007) ---> chọn Data validation ---> bạn chọn thẻ setting, trong mục Allow bạn chọn list ở dưới là mục source bạn gõ dấu = rồi gõ tên list bạn đặt lúc nãy, như tên ở trên thì bạn gõ =ds
thân! chúc bạn thành công.
 
Upvote 0
chào bạn..nó rất đơn giản bạn à, thấy mấy bác kia xài toàn code, mình thì chưa từng học qua VBA bao giờ
- bạn làm thế này, bạn tạo riêng danh sách cho 1 sheet mới, bạn quét chọn toàn bộ cột hay hàng cho danh sách đó rồi kích chuột phải chọn "name a range " bạn đặt tên là ds viết tắt của danh sách chẳng hạn, hay bất kì tên nào bạn muốn, nhưng có 1 điều là tên không được chứa kí tự số. bạn phải nhớ cái tên bạn vừa đặt.
- Tiếp theo bạn chọn 1 ô nào đó mà bạn muốn đặt list cho danh sách, bạn vào data trên thanh công cụ (cho excel 2007) ---> chọn Data validation ---> bạn chọn thẻ setting, trong mục Allow bạn chọn list ở dưới là mục source bạn gõ dấu = rồi gõ tên list bạn đặt lúc nãy, như tên ở trên thì bạn gõ =ds
thân! chúc bạn thành công.

Bạn có thể sửa trên file của mình được không? Rồi up lên cho mình tham khảo với nhé.
Cảm ơn bạn !
 
Upvote 0
mình trình bày trên rất rõ ràng rồi, mà sao mình đính kèm file lên chỗ trả lời sao không được !
 
Upvote 0
mình làm vậy Insert Image ( cái biểu tượng excel ) nhưng nó không lên do mạng yếu hay sao biết? nói chung bạn làm theo từng bước như trên là OK rồi, mình trình bày rất chi tiết và rõ ràng
 
Upvote 0
Thử thế này xem sao
Thân
Thử thế này xem sao
Thân
Thử thế này xem sao
Thân
A ơi! e cũng muốn tạo ds xã_huyện_tỉnh xổ xuống có điều kiện như a làm. E hơi ngu tí. nên a có thể giúp e viết rõ trình tự các bước làm được ko ạ. E có xem trên youtube và 1 số trang khác nhưng làm ko ra kết quả a ạ.
Cảm ơn a nhiều và mong a giúp đỡ ạ.
 
Upvote 0
Mình giải thích thêm 1 lần nữa :-=

Cách hoạt động của sheet Ketqua:

- Đầu tiên bạn chọn 1 giá trị của cột Profile.
- Tiếp tục bạn chọn cột Danh mục thì nó show 1 list Danh mục thuộc giá trị Profile mà bạn đã chọn (các danh mục này ứng với hệ Profile đã có bên sheet BangThamChieu)
- Sau khi nhập xong cột Danh mục, chọn tiếp cột Chủng loại -> nó lọc ra các chủng loại thuộc hệ Profile và Danh mục đã cài bên sheet BangThamChieu.



Vậy trường hợp có giá trị ở cột Profile nhưng không cí giá trị ở cột danh mục thì xủa lý thế nào bạn
 
Upvote 0
A ơi! e cũng muốn tạo ds xã_huyện_tỉnh xổ xuống có điều kiện như a làm. E hơi ngu tí. nên a có thể giúp e viết rõ trình tự các bước làm được ko ạ. E có xem trên youtube và 1 số trang khác nhưng làm ko ra kết quả a ạ.
Cảm ơn a nhiều và mong a giúp đỡ ạ.
Bạn Nêu khơi khơi vầy thì chịu.
Nên đưa cái File đang theo dõi lên mới biết mà làm cho phù hợp.
 
Upvote 0

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

Back
Top Bottom