Tạo nút validation và danh sách không được trống. (1 người xem)

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

0167767

Thành viên hoạt động
Tham gia
10/3/12
Bài viết
141
Được thích
10
Chào các thành viên thân mến. Mình có 1 file excel gặp khó khăn mong các bạn giúp dùm.
Hỏi:
1. Nút validation không trống.
2. Danh sách không được trống.
3. Dò tìm ở danh sách và đơn vị bằng nút validation.
Các bạn xem file giúp dùm mình nhé.
Cảm ơn các bạn trước.
 

File đính kèm

Chào các thành viên thân mến. Mình có 1 file excel gặp khó khăn mong các bạn giúp dùm.
Hỏi:
1. Nút validation không trống.
2. Danh sách không được trống.
3. Dò tìm ở danh sách và đơn vị bằng nút validation.
Các bạn xem file giúp dùm mình nhé.
Cảm ơn các bạn trước.
Cái này hơi khó đây, yêu cầu danh sách validation không trống mà trong dữ liệu thật của bạn lại để trống là sao? Nếu dữ liệu liên tục thì rất dễ.
 
Cái này hơi khó đây, yêu cầu danh sách validation không trống mà trong dữ liệu thật của bạn lại để trống là sao? Nếu dữ liệu liên tục thì rất dễ.
Mình đính kèm file lại bạn xem giúp nhé.
Như trong file mình có 3 danh sách thôi. Ví dụ có thêm danh sách thứ 4 thì mình nhập vào. Lúc này nút validation có thêm danh sách thứ 4. Còn hiện tại không có danh sách thứ 4 thì cái nút validation nó trống mấy dòng cuối "ý mình là không cho trống mấy dòng cuối luôn vậy".
Còn vấn đề danh sách tên học sinh mình nhập vào rồi, nghĩa là em này còn đi học. Ví dụ 1 hôm đổi trời chở gió em đó nghỉ học thì mình xóa luôn.
Khi đó mình chọn lại bằng nút validation xem xem coi danh sách lớp đó còn lại là bao nhiêu em có mặt và còn đi học.
 

File đính kèm

Lần chỉnh sửa cuối:
Mình đính kèm file lại bạn xem giúp nhé.
Như trong file mình có 3 danh sách thôi. Ví dụ có thêm danh sách thứ 4 thì mình nhập vào. Lúc này nút validation có thêm danh sách thứ 4. Còn hiện tại không có danh sách thứ 4 thì cái nút validation nó trống mấy dòng cuối "ý mình là không cho trống mấy dòng cuối luôn vậy".
Còn vấn đề danh sách tên học sinh mình nhập vào rồi, nghĩa là em này còn đi học. Ví dụ 1 hôm đổi trời chở gió em đó nghỉ học thì mình xóa luôn.
Khi đó mình chọn lại bằng nút validation xem xem coi danh sách lớp đó còn lại là bao nhiêu em có mặt và còn đi học.
Tôi chỉ lập công thức cho 10 danh sách thôi, nếu bạn muốn thêm thì tự thiết lập theo file mẫu.
 

File đính kèm

Cảm ơn hai bạn rất nhiều. Chắc tại tôi diễn đạt chưa hết do vậy mà đã làm phiền 2 bạn. Mình xin diễn đạt lại vậy.
1. Cái nút validation không cho trống.
2. Khi chọn nút validation (sheet Chon), tôi ví dụ tôi chọn danh sách 2 thì ở cột danh sách và đơn vị cho ra là danh sách 2 ở sheet DS, Dạng bài giống như tạo danh sách duy nhất vậy.
Mình gửi bài gần giống bài của mình. Bài gần giống chỉ có 1 danh sách còn bài mình có nhiều danh sách.
Rất mong các bạn trao đổi tiếp.
 

File đính kèm

Lần chỉnh sửa cuối:
Cảm ơn hai bạn rất nhiều. Chắc tại tôi diễn đạt chưa hết do vậy mà đã làm phiền 2 bạn. Mình xin diễn đạt lại vậy.
1. Cái nút validation không cho trống.
2. Khi chọn nút validation (sheet Chon), tôi ví dụ tôi chọn danh sách 2 thì ở cột danh sách và đơn vị cho ra là danh sách 2 ở sheet DS, Dạng bài giống như tạo danh sách duy nhất vậy.
Mình gửi bài gần giống bài của mình. Bài gần giống chỉ có 1 danh sách còn bài mình có nhiều danh sách.
Rất mong các bạn trao đổi tiếp.
Bạn đã xem #4 chưa mà la ó thế.
 
Bạn bị cái gì vậy. Tôi đã nói là tôi chỉ làm thử cho bạn cột Danh sách. Còn cột Đơn vị bạn tự nghiên cứu và làm theo.

Bạn còn la làng, bla bla cái gì không đúng.
Bạn thử chọn danh sách ở trên, sau đó ở dưới bạn lick vào data validation ở vùng phía dưới xem còn dư dòng trống nào không???
Bạn ấy muốn là click chọn tên danh sách thì ở dưới hiện tất cả người trong danh sách đó anh à. Giống như lọc auto fillter đó
Gửi chủ thớt. Với file của hpkhuonng bạn chỉ cần unhide cột D,E,F và nhìn công thức rồi làm theo với trường hợp của bạn
 
Chắc chắn sẽ thỏa mãn tác giả
 
Buồn buồn viết bài này lại bằng VBA theo ý tác giả muốn thía...

Paste code vào sheet1(CHON). Thay đổi giá trị tại B4 thì code chạy
Mã:
Option Explicit


Private Sub Worksheet_Change(ByVal Target As Range)
Dim Arr As Range, sArr, dArr, I&, K&, Cll As Range, Col&, Dk As String
Dk = [B4].Value
Application.ScreenUpdating = False
If Target.Address = "$B$4" Then
With Sheet2
    Set Arr = .Range(.[B6], .[B6].End(2))
For Each Cll In Arr
If Cll.Value = Dk Then
    Col = Cll.Column - 1: Exit For
End If
Next Cll
If Col Then
    sArr = .Range(.[A7], .[A65000].End(3)).Offset(, Col).Resize(, 2).Value
Else
    Range("A7:C65000").ClearContents: Exit Sub
End If
End With
    ReDim dArr(1 To UBound(sArr), 1 To 3)
    For I = 1 To UBound(sArr)
        If sArr(I, 1) <> Empty Then
            K = K + 1
            dArr(K, 1) = K
            dArr(K, 2) = sArr(I, 1)
            dArr(K, 3) = sArr(I, 2)
        End If
    Next I
    Range("A7:C65000").ClearContents
    If K Then Range("A7").Resize(K, 3).Value = dArr
End If
Application.ScreenUpdating = True
End Sub
Bài của bạn chính xác rồi. Cảm phiền bạn lần nữa, sau khi chọn danh sách xong, mình muốn trộn danh sách ấy và đơn vị ngẫu nhiên. Mong bạn giúp dùm cảm ơn bạn.
 

File đính kèm

Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Arr As Range, sArr, dArr, I&, K&, Cll As Range, Col&, Dk As String
Dk = [B4].Value
Application.ScreenUpdating = False
If Target.Address = "$B$4" Then
With Sheet2
    Set Arr = .Range(.[B6], .[B6].End(2))
For Each Cll In Arr
If Cll.Value = Dk Then
    Col = Cll.Column - 1: Exit For
End If
Next Cll
If Col Then
    sArr = .Range(.[A7], .[A65000].End(3)).Offset(, Col).Resize(, 2).Value
Else
    Range("A7:C65000").ClearContents: Exit Sub
End If
End With
    ReDim dArr(1 To UBound(sArr), 1 To 4)
    For I = 1 To UBound(sArr)
        If sArr(I, 1) <> Empty Then
            K = K + 1
            dArr(K, 1) = K
            dArr(K, 2) = sArr(I, 1)
            dArr(K, 3) = sArr(I, 2)
            dArr(K, 4) = "=RAND()"
        End If
    Next I
        Range("A7:C65000").ClearContents
    If K Then
        Range("A7").Resize(K, 4).Value = dArr
        Range("B7").Resize(K, 3).Sort [D7], xlAscending
        Range("D7").Resize(K).ClearContents
    End If
End If
Application.ScreenUpdating = True
End Sub
Code chạy rất tôt bạn à, tuy nhiên mình muốn hàm "=RAND()" này nằm ở cột E7:………
chỉnh sửa code như thế nào? Vì cột D7 trở xuống mình có dữ liệu ở đó, nên mỗi khi
Range("B7").Resize(K, 3).Sort [D7], xlAscending
Range("D7").Resize(K).ClearContents
nó xóa dữ liệu của mình. Mong bạn giúp thêm lần nữa. Cảm ơn bạn rất nhiều.
 

File đính kèm

Code chạy rất tôt bạn à, tuy nhiên mình muốn hàm "=RAND()" này nằm ở cột E7:………
chỉnh sửa code như thế nào? Vì cột D7 trở xuống mình có dữ liệu ở đó, nên mỗi khi
Range("B7").Resize(K, 3).Sort [D7], xlAscending
Range("D7").Resize(K).ClearContents
nó xóa dữ liệu của mình. Mong bạn giúp thêm lần nữa. Cảm ơn bạn rất nhiều.
Thế tại sao bạn không đơn giản vấn đề hơn là cho dữ liệu của bạn ở cột E còn cột D (Cột tạm dữ liệu sẽ bị xóa sau khi sắp xếp) bạn cho ẩn đi.
 
Thế tại sao bạn không đơn giản vấn đề hơn là cho dữ liệu của bạn ở cột E còn cột D (Cột tạm dữ liệu sẽ bị xóa sau khi sắp xếp) bạn cho ẩn đi.
Vì cột D liên quan đến đoạn code khác và sheet khác nên phức tạp hơn, giả lại mình cũng không biết chỉnh sửa code lại. Nên nhân tiện chỉnh sửa code trên lại giúp dùm. Cảm ơn các bạn.
 
Vì cột D liên quan đến đoạn code khác và sheet khác nên phức tạp hơn, giả lại mình cũng không biết chỉnh sửa code lại. Nên nhân tiện chỉnh sửa code trên lại giúp dùm. Cảm ơn các bạn.
Bạn sẽ thất vọng về kế hoạch của mình rồi đấy, giả sử cột D không tác động đến nhưng khi sắp xếp cột E thì dữ liệu cột D cũng chịu tác động theo, lúc đó dữ liệu cột D sẽ chạy lung tung không kiểm soát được giá trị đó thuộc đơn vị nào, nó là của học sinh nào. Và mỗi lần bạn chọn lại danh sách thì giá trị sẽ thay đổi theo lúc đó cột D của bạn sẽ không chính xác. Để chắc chắc bạn nên đưa file gốc lên đây mọi người xem và giúp đỡ chứ bạn đưa file này sửa xong áp dụng cho file gốc lại không đúng và bạn nảy sinh vấn đề hoài luôn đó.
 
Chào bạn 0167767! Theo mình thì dùng hàm if cũng được nhưng hơi dài. Có điều trong nút validation của bạn sao lại có khoảng trống?
 

File đính kèm

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

Back
Top Bottom