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

Liên hệ QC

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
Web KT

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

Back
Top Bottom