Quả thật rắc rối ghê ---> Rắc rối nằm ở chổ sắp xếp chứ việc tìm kiếm thì quá dể rồiViết sao cho NDU hiểu. Bạn cố gắng giúp tôi vậy thì hãy mường tượng như thế này NDU hởi :
- Mở file " Số công nhân tăng giảm lần 3 "
- Các cột từ B4 đến B...,C4 đến C..., D4 đến D...là khu vực nhập liệu, các số thẻ không nằm ngay ngắn và theo thứ tự từ thấp đến cao, không có khoảng trắng
- Tôi trình bày trong file trước là đã sắp xếp cho dể hiểu thôi
File đính kèm
( Số thẻ đến thời điểm này là 900 - không dùng hàm choose được phải không ?)
NDU ở phường nào ? Sao lại có thể uống cafe ? , bình thường thôi
Chúc mệt mà vui ( đừng có nổi quạo nhé)
Sub Compare2List()
Dim List1 As Range, List2 As Range, List3 As Range
Dim Cll1 As Range, Cll2 As Range, Cll3 As Range, i As Long
Set List1 = Range([B4], [B65536].End(xlUp))
Set List2 = Range([C4], [C65536].End(xlUp))
Set List3 = Range([D4], [D65536].End(xlUp))
Range("E4:G60000").ClearContents
With WorksheetFunction
For Each Cll1 In List1
If .CountIf(List2, Cll1) Then [E65536].End(xlUp)(2) = Cll1
Next Cll1
For Each Cll2 In List2
If .CountIf(List1, Cll2) = 0 Then [F65536].End(xlUp)(2) = Cll2
Next Cll2
For Each Cll3 In List3
If .CountIf(List1, Cll3) = 0 Then
With Range("F65536").End(xlUp)
.Offset(1, 0) = Cll3
.Offset(1, 1) = Cll3
End With
Else
Cells(i + 4, "G") = Cll3
i = i + 1
End If
Next Cll3
End With
End Sub
- Bạn mà còn thấy như thế thì tôi như thế nào ?Quả thật rắc rối ghê
và đọan này :For Each Cll1 In List1
If .CountIf(List2, Cll1) Then [E65536].End(xlUp)(2) = Cll1
Next Cll1
Mong tin.For Each Cll3 In List3
If .CountIf(List1, Cll3) = 0 Then
With Range("F65536").End(xlUp)
.Offset(1, 0) = Cll3
.Offset(1, 1) = Cll3
End With
Else
Cells(i + 4, "G") = Cll3
i = i + 1
End If
Next Cll3
Để nhắn tin riêng hen!Trước tiên cám ơn bạn cái đã.
- Tôi ở gần trường NGÔ QUYỀN, bạn cho tôi số tel, liên hệ xuống BH uống cafe cho vui
Birthday = 06/10/1966( không biết NDU bao nhiêu tuổi ? Cho dễ xưng hô hởi " Tác giả Đại Ca"...câu này của bạn )
- Duyệt các cell trong List1- Bạn giải thích dùm tôi đọan code sau để tôi còn tiếp tục...
PHP:For Each Cll1 In List1 If .CountIf(List2, Cll1) Then [E65536].End(xlUp)(2) = Cll1 Next Cll1
- Duyệt các cell trong List3và đọan này :
Mong tin.PHP:For Each Cll3 In List3 If .CountIf(List1, Cll3) = 0 Then With Range("F65536").End(xlUp) .Offset(1, 0) = Cll3 .Offset(1, 1) = Cll3 End With Else Cells(i + 4, "G") = Cll3 i = i + 1 End If Next Cll3
Vì vậy tôi mới nhờ bạn giải thích đoạn code là như thế.Chổ màu đỏ này tôi lo lắng nhất, có thể nó sẽ "đè" vào dử liệu trước đó
Ai chà! Vậy phải gọi bằng anh rồiTo : NDU
Tôi đã kiểm tra rất kỷ code của bạn, kết quả là ...thất bại hoàn toàn ( Cười lên đi )
Tôi không hiểu ý của bạn viết trong code nhưng tôi đoán (có đoán ở trong đây ) lỗi chắc chắn nằm ở đây :
Vì vậy tôi mới nhờ bạn giải thích đoạn code là như thế.
Vậy thì tiếp tục hay là ................cười?
NDU nhắn tin theo số :0917150322 ( NDU = tuổi em út tôi )
Mong tin
Nó đây chú NDU ơi .Thất bại là thất bại chổ nào?
Phùùùùùùùùùù ---> Chỉ có mỗi cái "SẮP XẾP" mà nó "nhọc" ghê!Nó đây chú NDU ơi .
Đính kèm fỉe ( 2 code trước và sau )
Nt cho anh đi.
Sub Compare2List()
Dim List1 As Range, List2 As Range, List3 As Range
Dim Cll1 As Range, Cll2 As Range, Cll3 As Range, i As Long
Set List1 = Range([B4], [B65536].End(xlUp))
Set List2 = Range([C4], [C65536].End(xlUp))
Set List3 = Range([D4], [D65536].End(xlUp))
Range("E4:G60000").ClearContents
With WorksheetFunction
For Each Cll1 In List1
If .CountIf(List2, Cll1) Then [E65536].End(xlUp)(2) = Cll1
Next Cll1
For Each Cll2 In List2
If .CountIf(List1, Cll2) = 0 Then [F65536].End(xlUp)(2) = Cll2
Next Cll2
For Each Cll3 In List3
If .CountIf(List1, Cll3) = 0 Then
With Range("F65536").End(xlUp)
.Offset(1, 0) = Cll3
.Offset(1, 1) = Cll3
End With
End If
Next Cll3
For Each Cll3 In List3
If .CountIf(List1, Cll3) Then [G65536].End(xlUp)(2) = Cll3
Next Cll3
End With
End Sub
Kết quả thể hiện trong file thấy yêu cầu cũng bình thường, nhưng để đạt được thì oải quá phải không ?Điều anh yêu cầu cũng khá lý thú
Yêu cầu của anh là:Còn 1 yêu cầu nhỏ, ghi chú trong file.
Cái này dể thôi:Có hàm nào tính dược số vừa tăng vừa giảm không NDU nhỉ, như ví dụ dưới là =4
=SUMPRODUCT(1*(F4:F20=G4:G20))
=SUMPRODUCT(COUNTIF(F4:F20,G4:G20))