done. tạm biệt

Liên hệ QC
Status
Không mở trả lời sau này.

danhngocvnn

Thành viên mới
Tham gia
29/12/18
Bài viết
6
Được thích
1
Em chào cả nhà,

Em có 1 file excel gồm 3 sheet. Sheet FINAL sẽ bằng toàn bộ dữ liệu của cột đầu tiên (cột A) của Sheet NEW ngoại trừ toàn bộ dữ liệu của cột A Sheet TEMP. Nghĩa là: sheet 3 = sheet 2 - sheet 1. nghĩa là sheet 3 không được chứa data của sheet 1. Thì công thức như thế nào ạ. Hoặc có thể dùng macro thì viết code sao ạ
Mong cả nhà giúp đỡ ạ
 
Em chào cả nhà,

Em có 1 file excel gồm 3 sheet. Sheet FINAL sẽ bằng toàn bộ dữ liệu của cột đầu tiên (cột A) của Sheet NEW ngoại trừ toàn bộ dữ liệu của cột A Sheet TEMP. Nghĩa là: sheet 3 = sheet 2 - sheet 1. nghĩa là sheet 3 không được chứa data của sheet 1. Thì công thức như thế nào ạ. Hoặc có thể dùng macro thì viết code sao ạ
Mong cả nhà giúp đỡ ạ
Sao em đọc thấy hoang mang vậy trời. Cái này khó hơn cả đề thi Olympic mà em đã gặp
 
Nghĩa là em chỉ muốn lấy dữ liệu từ sheet 2 nhưng không được chứa những dữ liệu ở sheet 1 và tự động cho ra kết quả ở sheet 3 đó ạ
Theo mình thì cách nhanh nhất là bạn đính kèm file ví dụ và làm mẫu kết quả mong muốn. Khoảng 24h là có kết quả ( 24h là thời gian Max lấy theo thời gian Min của mấy công ty chuyển phát nhanh )
 
Theo mình thì cách nhanh nhất là bạn đính kèm file ví dụ và làm mẫu kết quả mong muốn. Khoảng 24h là có kết quả ( 24h là lấy thời gian Max lấy theo thời gian Min của mấy cô ty chuyển phát nhanh )

Em gửi file dữ liệu mẫu ạ
 

File đính kèm

  • Hàm lọc mail.xlsx
    44.2 KB · Đọc: 8
Với file #5 thì chả có mống nào thì fải!
PHP:
Sub TimDanhSachKhongCoO1DanhSachKhac()
 Dim Rng As Range, sRng As Range, Cls As Range, Rg0 As Range
 Dim W As Long, J As Long
 
 With Sheet1
    Set Rng = .[a9].CurrentRegion
 End With
 With Sheet2
    Set Rg0 = .[a9].CurrentRegion
    ReDim Arr(1 To Rg0.Rows.Count, 1 To 1) As String
    For Each Cls In Rg0
        Set sRng = Rng.Find(Cls.Value, , xlFormulas, xlWhole)
        If sRng Is Nothing Then
            W = W + 1:              Arr(W, 1) = Cls.Value
        Else
            Cls.Interior.ColorIndex = 38
            J = J + 1
        End If
    Next Cls
 End With
 MsgBox W, , J
End Sub
 
Với file #5 thì chả có mống nào thì fải!
PHP:
Sub TimDanhSachKhongCoO1DanhSachKhac()
Dim Rng As Range, sRng As Range, Cls As Range, Rg0 As Range
Dim W As Long, J As Long

With Sheet1
    Set Rng = .[a9].CurrentRegion
End With
With Sheet2
    Set Rg0 = .[a9].CurrentRegion
    ReDim Arr(1 To Rg0.Rows.Count, 1 To 1) As String
    For Each Cls In Rg0
        Set sRng = Rng.Find(Cls.Value, , xlFormulas, xlWhole)
        If sRng Is Nothing Then
            W = W + 1:              Arr(W, 1) = Cls.Value
        Else
            Cls.Interior.ColorIndex = 38
            J = J + 1
        End If
    Next Cls
End With
MsgBox W, , J
End Sub

Anh ơi, ý em là macro chỉ copy những email nào ở sheet "Email mới" paste sang sheet "Đã lọc" và không được chứa những email ở sheet "Loại trừ" á. Anh giúp em với.
 
Không có cái kiểu: "Nói 1 đằng, đưa file 1` nẽo thế kia"

Tạm biết!
 
Trước tiên ta xóa kết quả cũ. Tiếp theo nhập email mới vào mảng. Nếu không có email mới thì kết thúc cuộc chơi. Tiếp theo mới nhập email loại trừ vào mảng và thêm vào đít to. Nếu thứ tự ngược lại, tức trước hết xét email loại trừ sau đó mới xét email mới thì khi gặp trường hợp không có email mới thì code vẫn thực hiện việc nhập email loại trừ vào mảng và vào đít to. Như thế là tốn điện nước không cần thiết. Vì khi không có email mới thì dĩ nhiên sẽ không có kết quả, làm gì thêm chỉ là vô ích.

Tôi dùng End(xlUp). Nếu dùng End(xlDown) mà không kiểm tra kết quả mà nó trả về thì "nguy to". Với trường hợp cột A trong sheet loai trừ rỗng hoặc chỉ A1 <> "" thì mảng và đít to đều có hơn 1 triệu dòng. Lúc đó mất năng lượng và thời gian không cần thiết.

Hi vọng code lường được các trường hợp.
Mã:
Sub new_email()
Dim lastRow As Long, r As Long, count As Long, data(), loai(), dic As Object
'    xoa ket qua cu
    With Sheet3
        .Range("A1:A" & .Range("A" & Rows.count).End(xlUp).Row).ClearContents
    End With
'    cho du lieu email moi vao mang data
    With Sheet2
        lastRow = .Cells(Rows.count, "A").End(xlUp).Row
'        khong co du lieu thi dung cuoc choi
        If .Cells(lastRow, "A").Value = "" Then Exit Sub
        data = .Range("A1:A" & lastRow + 1).Value
    End With
    count = UBound(data) - 1
   
    Set dic = CreateObject("Scripting.Dictionary")
'    nhap cac email loai tru vao mang loai
    With Sheet1
        lastRow = .Cells(Rows.count, "A").End(xlUp).Row
        loai = .Range("A1:A" & lastRow + 1).Value
    End With
'    cho cac email loai tru duy nhat vao tu dien
    For r = 1 To UBound(loai) - 1
        If loai(r, 1) <> "" And Not dic.exists(loai(r, 1)) Then dic.Add loai(r, 1), ""
    Next r
'    chi lam khi co cac email loai tru
    If dic.count Then
        count = 0
        For r = 1 To UBound(data) - 1
            If Not dic.exists(data(r, 1)) Then
                count = count + 1
                data(count, 1) = data(r, 1)
            End If
        Next r
    End If
'    nhap ket qua vao sheet3
    If count Then Sheet3.Range("A1:A" & count).Value = data
    Set dic = Nothing
End Sub
 
Không rõ chủ topic chào rồi đi đâu nhỉ?

1546174985552.png
 
/(hông hẵn qua cầu rút ván, mà là rãnh rỗi đi fá đám, quậy tưng chơi cho vui í mà!
 
Ủa em gửi đúng file mà anh. Dạ vây thôi em cám ơn anh nhiều. Tạm biệt anh
Góp ý cho bạn:
Diễn đàn là nơi để học hỏi, trao đổi, tâm sự và giúp đỡ lẫn nhau.
Tiêu đề bài viết sẽ giúp các thành viên khác tìm kiếm những cái cần cho công việc.
Vì vậy, bạn không nên xóa tiêu đề bài viết có thể vi phạm nội quy.
 
Góp ý diễn đàn.
1/ Diễn đàn nên có 1 sổ đen của diễn đàn. Với những thành viên sửa tiêu đề sau khi xong việc. Vậy người sau cần tìm nội dung đó phải làm ntn? Hoặc với thành viên có những lời nói khiếm nhã, vi phạm nội quy nhiều lần. Sẽ ngồi trong sổ đen đấy. Nick sẽ đổi màu # với thành viên bình thường.
2/ Thiết nghĩ giờ diễn đàn nên làm nút dislike nữa. Ai bị nhiều nút dislike thì màu tên sẽ đổi màu.
Để mọi người trong diễn đàn thấy thành viên có màu khác biệt đăng bài. Sẽ tự cân nhắc giúp đỡ hay ko. Chứ cho dù có đình chỉ hoạt động hoặc khóa nick thì người ta vẫn có thể lập nick mới được.
 
Status
Không mở trả lời sau này.
Web KT
Back
Top Bottom