giúp bỏ dòng trống trong validation động (1 người xem)

  • Thread starter Thread starter andyminh
  • Ngày gửi Ngày gửi
Liên hệ QC

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

andyminh

Thành viên chính thức
Tham gia
3/8/12
Bài viết
65
Được thích
4
HI các A/C GPE

Mình đang làm validation động chọn theo loại:
Ví dụ chọn loại HĐ ở cột C thì ở cột D sẽ ra list validation của sheet HD, chọn loại ĐH ở cột C thì cột D sẽ ra list validation của sheet DH. Tuy nhiên list validation nó xuất có nhiều dòng trống quá, khi cần lấy dữ liệu gặp khó khăn.
Anh/Chị có các nào loại bỏ dòng trống đó được không? hoặc tạo dữ liệu phụ loại bỏ dòng trống để có thể áp dung data validation động như trên.
Thanks nhiều.
 

File đính kèm

HI các A/C GPE

Mình đang làm validation động chọn theo loại:
Ví dụ chọn loại HĐ ở cột C thì ở cột D sẽ ra list validation của sheet HD, chọn loại ĐH ở cột C thì cột D sẽ ra list validation của sheet DH. Tuy nhiên list validation nó xuất có nhiều dòng trống quá, khi cần lấy dữ liệu gặp khó khăn.
Anh/Chị có các nào loại bỏ dòng trống đó được không? hoặc tạo dữ liệu phụ loại bỏ dòng trống để có thể áp dung data validation động như trên.
Cảm ơn nhiều.
Vầy được không!?
Xem file kèm.
Thân
 

File đính kèm

HI các A/C GPE

Mình đang làm validation động chọn theo loại:
Ví dụ chọn loại HĐ ở cột C thì ở cột D sẽ ra list validation của sheet HD, chọn loại ĐH ở cột C thì cột D sẽ ra list validation của sheet DH. Tuy nhiên list validation nó xuất có nhiều dòng trống quá, khi cần lấy dữ liệu gặp khó khăn.
Anh/Chị có các nào loại bỏ dòng trống đó được không? hoặc tạo dữ liệu phụ loại bỏ dòng trống để có thể áp dung data validation động như trên.
Cảm ơn nhiều.
Thử:
PHP:
Sub abc()
    Dim Ws As Worksheet, a(), i As Long, k As Long, LR As Long, WsName As String
    ReDim b(1 To 1000, 1 To 3)
    For Each Ws In Worksheets
        If Ws.Name <> "TONGHOP" And Ws.Name <> "DM" Then
            WsName = Ws.Name
            LR = Ws.Range("B50000").End(3).Row
            If LR > 4 Then
                a = Ws.Range("B5:B" & LR).Value
                For i = 1 To UBound(a)
                    If a(i, 1) <> Empty Then
                        k = k + 1: b(k, 1) = k
                        b(k, 2) = WsName: b(k, 3) = a(i, 1)
                    End If
                Next
            End If
        End If
    Next
    With Sheets("TONGHOP")
        .Range("B8:D6000").ClearContents
        If k Then .Range("B8:D8").Resize(k) = b
    End With
End Sub
 
Vầy được không!?
Xem file kèm.
Thân
Đối với sheet DH, nếu phía dưới là các số không phải lặp lại ( đổi một vài số 25 thành số 26...40 chẳng hạn) thì cột gom số hđ loại bỏ trùng lặp nó không có chạy tiếp, mà chỉ ngừng ở số 25. Anh xem lại lỗi vì sao.
Bài đã được tự động gộp:

Thử:
PHP:
Sub abc()
    Dim Ws As Worksheet, a(), i As Long, k As Long, LR As Long, WsName As String
    ReDim b(1 To 1000, 1 To 3)
    For Each Ws In Worksheets
        If Ws.Name <> "TONGHOP" And Ws.Name <> "DM" Then
            WsName = Ws.Name
            LR = Ws.Range("B50000").End(3).Row
            If LR > 4 Then
                a = Ws.Range("B5:B" & LR).Value
                For i = 1 To UBound(a)
                    If a(i, 1) <> Empty Then
                        k = k + 1: b(k, 1) = k
                        b(k, 2) = WsName: b(k, 3) = a(i, 1)
                    End If
                Next
            End If
        End If
    Next
    With Sheets("TONGHOP")
        .Range("B8:D6000").ClearContents
        If k Then .Range("B8:D8").Resize(k) = b
    End With
End Sub
VBA này để vào sheet tổng hợp hay sao vậy anh
 
Đối với sheet DH, nếu phía dưới là các số không phải lặp lại ( đổi một vài số 25 thành số 26...40 chẳng hạn) thì cột gom số hđ loại bỏ trùng lặp nó không có chạy tiếp, mà chỉ ngừng ở số 25. Anh xem lại lỗi vì sao.
Bài đã được tự động gộp:


VBA này để vào sheet tổng hợp hay sao vậy anh

Việc bạn thay đổi như vậy không ảnh hưởng gì tới Code, bởi vì trong Code cứ thằng nào trong cột B mà khác 0, là nhặt sang Sheets("TONGHOP").
Bạn có thể đưa File mà bạn cho là chưa ổn, tôi xem.
 
Đối với sheet DH, nếu phía dưới là các số không phải lặp lại ( đổi một vài số 25 thành số 26...40 chẳng hạn) thì cột gom số hđ loại bỏ trùng lặp nó không có chạy tiếp, mà chỉ ngừng ở số 25. Anh xem lại lỗi vì sao.
À! tôi quên thêm điều kiện loại dòng rỗng. Bạn điều chỉnh Sheet DH:
C5=IFERROR(T(INDEX($B$5:$B$500,MATCH(,INDEX(COUNTIF($C$4:$C4,$B$5:$B$500)+($B$5:$B$500=""),),))),"")
Enter, fill xuống.
Thân
 
Việc bạn thay đổi như vậy không ảnh hưởng gì tới Code, bởi vì trong Code cứ thằng nào trong cột B mà khác 0, là nhặt sang Sheets("TONGHOP").
Bạn có thể đưa File mà bạn cho là chưa ổn, tôi xem.
không, cái này là ý em cho anh ở trên kia dùng = công thức ấy, của anh viết bằng VBA em không biết để vào sheet nào cả, với không biết là khi bỏ code vào có cần xóa các data validation cũ không?
 

File đính kèm

Web KT

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

Back
Top Bottom