Tìm ngày không nằm trong vùng được chọn (1 người xem)

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

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

Miccpro

Thành viên thường trực
Tham gia
9/12/10
Bài viết
236
Được thích
10
Em có 3 cột trong đó 2 cột dữ liệu ngày bắt đầu và ngày kết thúc, cột thứ 3 là cột từ Min(ngày bắt đầu) đến Max(ngày kết thúc). Giờ em muốn tìm những ngày ở cột thứ 3 mà không nằm trong 2 cột dữ liệu có được không ạ, giải bài toán bằng hàm hay VBA tiện hơn vì dữ liệu tương đối nhiều. Em xin cảm ơn cả nhà
 

File đính kèm

Em có 3 cột trong đó 2 cột dữ liệu ngày bắt đầu và ngày kết thúc, cột thứ 3 là cột từ Min(ngày bắt đầu) đến Max(ngày kết thúc). Giờ em muốn tìm những ngày ở cột thứ 3 mà không nằm trong 2 cột dữ liệu có được không ạ, giải bài toán bằng hàm hay VBA tiện hơn vì dữ liệu tương đối nhiều. Em xin cảm ơn cả nhà
Tại I6 xài công thức sau rồi fill xuống. Sau đó Filter những giá trị bằng 0 là cái cần tìm. Thích có màu báo hiệu thì sử dụng Conditional Formatting.
Mã:
=COUNTIF($E$6:$F$11,H6)
P/s: Dữ liệu nhiều là bao nhiêu vậy bạn? Cứ xài công thức thử đi nè.
 
Upvote 0
Tại I6 xài công thức sau rồi fill xuống. Sau đó Filter những giá trị bằng 0 là cái cần tìm. Thích có màu báo hiệu thì sử dụng Conditional Formatting.
Mã:
=COUNTIF($E$6:$F$11,H6)
P/s: Dữ liệu nhiều là bao nhiêu vậy bạn? Cứ xài công thức thử đi nè.
Chưa đúng ý của chủ Topic rồi bạn ơi.
Trong File chỉ có 4 ngày thiếu thôi.
 
Upvote 0
Tại I6 xài công thức sau rồi fill xuống. Sau đó Filter những giá trị bằng 0 là cái cần tìm. Thích có màu báo hiệu thì sử dụng Conditional Formatting.
Mã:
=COUNTIF($E$6:$F$11,H6)
P/s: Dữ liệu nhiều là bao nhiêu vậy bạn? Cứ xài công thức thử đi nè.
Công thức của bác chưa đúng với trường hợp của em ạ. Ví dụ: ngày BĐ: 01/01/2016; ngày KT: 03/01/2016 thì nó sẽ là ngày 01;02;03/01/2016 chứ không phải ngày 01 và 03 ạ
 
Upvote 0
Xin lỗi bác giangleloi vì câu hỏi không rõ ràng nhé
 
Upvote 0
bạn chạy code
Mã:
Sub GPE()
arr = Sheets("Sheet1").Range("H6", Sheets("Sheet1").Range("H6").End(xlDown))
darr = Sheets("Sheet1").Range("E6", Sheets("Sheet1").Range("F6").End(xlDown))
For i = 1 To UBound(arr)
    tmp = 0
    For j = 1 To UBound(darr)
        If arr(i, 1) >= darr(j, 1) And arr(i, 1) <= darr(j, 2) Then
            tmp = 1: Exit For
        End If
    Next
    If tmp = 0 Then Range("H" & i + 5).Interior.Color = 65535
Next
End Sub
 
Upvote 0
Em có 3 cột trong đó 2 cột dữ liệu ngày bắt đầu và ngày kết thúc, cột thứ 3 là cột từ Min(ngày bắt đầu) đến Max(ngày kết thúc). Giờ em muốn tìm những ngày ở cột thứ 3 mà không nằm trong 2 cột dữ liệu có được không ạ, giải bài toán bằng hàm hay VBA tiện hơn vì dữ liệu tương đối nhiều. Em xin cảm ơn cả nhà
Bạn dùng CT này tại I6:
Mã:
I6=IFERROR(LOOKUP(1,1/(H6>=$E$6:$E$11)/(H6<=$F$6:$F$11)),"Khong nam trong vung")
Fill xuống!!!
 
Upvote 0
bạn chạy code
Mã:
Sub GPE()
arr = Sheets("Sheet1").Range("H6", Sheets("Sheet1").Range("H6").End(xlDown))
darr = Sheets("Sheet1").Range("E6", Sheets("Sheet1").Range("F6").End(xlDown))
For i = 1 To UBound(arr)
    tmp = 0
    For j = 1 To UBound(darr)
        If arr(i, 1) >= darr(j, 1) And arr(i, 1) <= darr(j, 2) Then
            tmp = 1: Exit For
        End If
    Next
    If tmp = 0 Then Range("H" & i + 5).Interior.Color = 65535
Next
End Sub
Code của bác khi thay đổi ngày tháng trong cột E;F (dữ liệu) thì lại phải bôi trắng cột H rồi chạy code mới hiệu quả. Có cách gì mỗi lần chạy code nó tự động xóa các màu đã bôi để bôi lại không bác?
 
Upvote 0
Code của bác khi thay đổi ngày tháng trong cột E;F (dữ liệu) thì lại phải bôi trắng cột H rồi chạy code mới hiệu quả. Có cách gì mỗi lần chạy code nó tự động xóa các màu đã bôi để bôi lại không bác?
thêm 2 dòng lệnh
Mã:
Sub GPE()
Sheets("Sheet1").Range("H6", Sheets("Sheet1").Range("H6").End(xlDown)).Select
Selection.Interior.Pattern = xlNone
arr = Sheets("Sheet1").Range("H6", Sheets("Sheet1").Range("H6").End(xlDown))
darr = Sheets("Sheet1").Range("E6", Sheets("Sheet1").Range("F6").End(xlDown))
For i = 1 To UBound(arr)
    tmp = 0
    For j = 1 To UBound(darr)
        If arr(i, 1) >= darr(j, 1) And arr(i, 1) <= darr(j, 2) Then
            tmp = 1: Exit For
        End If
    Next
    If tmp = 0 Then Range("H" & i + 5).Interior.Color = 65535
Next
End Sub
 
Upvote 0
Code của bác khi thay đổi ngày tháng trong cột E;F (dữ liệu) thì lại phải bôi trắng cột H rồi chạy code mới hiệu quả. Có cách gì mỗi lần chạy code nó tự động xóa các màu đã bôi để bôi lại không bác?
Thêm dòng này:
Mã:
Range("H6:H" & UBound(arr, 1) + 5).Interior.Color = xlNone
dưới dòng này:
Mã:
darr = Sheets("Sheet1").Range("E6", Sheets("Sheet1").Range("F6").End(xlDown))
 
Upvote 0
Như vậy em quyết định dùng công thức của các bác kết hợp Conditional Formatting để bôi màu là nhanh nhất. Thanks all
 
Upvote 0
thay 2 dòng lệnh
Sheets("Sheet1").Range("H6", Sheets("Sheet1").Range("H6").End(xlDown)).Select
Selection.Interior.Pattern = xlNone
bằng dòng lệnh sẽ đẹp hơn
Sheets("Sheet1").Range("H6", Sheets("Sheet1").Range("H6").End(xlDown)).Interior.Pattern = xlNone
 
Upvote 0
Thêm dòng này:
Mã:
Range("H6:H" & UBound(arr, 1) + 5).Interior.Color = xlNone
dưới dòng này:
Mã:
darr = Sheets("Sheet1").Range("E6", Sheets("Sheet1").Range("F6").End(xlDown))
Bác thử kiểm tra giúp em trong trường hợp 2 cột E và F mà có ô rỗng thì có cách nào code vẫn chạy và bỏ qua ô rỗng không bác
 

File đính kèm

Upvote 0
Web KT

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

Back
Top Bottom