Lọc dữ liệu (1 người xem)

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

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

heocon

Thành viên chính thức
Tham gia
15/12/07
Bài viết
59
Được thích
14
Chào các anh chị giải pháp Excel!
Hôm nay heocon lại có 1 bài toán muốn nhờ anh chị giúp đỡ.
Em ko bít đặt tiêu đề như thế đã đúng với bài toán này chưa. Nêu ko phù hợp nhờ các Mod thay đổi giùm.

Em có 1 cột khách hàng ghi sai ỏ gần đúng. Em muốn sữa chúng lại cho chính xác.
Em lập ra 1 thư viện tên các khách hàng, để các tên sai sẽ tham chiếu vào.
Em ko bit viet VBA như thế nào, mong anh chị giúp em.
Chân thành cám ơn tất cả mọi người!
Chúc mọi người luôn vui vẽ.
Thân!
heo
 

File đính kèm

Gộp

Lại gặp được gặp anh SA_DQ rùi, cám ơn anh rất nhiều.
Nhưng sao heocon copy vào nó ko chạy vậy? Anh làm cho em luôn được ko?
Cám ơn anh!

Oh em làm được rồi anh ạ. Cám ơn anh rất nhiều
Nhưng sao em nhấn nút Lọc 2 lần thì nó lại x2 dữ liệu vậy anh?
Bây giờ em muốn tạo thêm nút Xóa baocao thì viết code như thế nào vậy anh?
Và anh giúp em tạo thông báo lổi nếu tên khách hàng ko có trong thư viện.
Mong anh chỉ giúp.

Em cám ơn mọi người rất nhiều.
Các anh chị có thể giúp em thêm 2 ý nữa ko?
1. Chỉ ra các dữ liệu không lọc được (không có trong thư viện), để em có thể biết mà sữa lại.
2. Em đổ 5000 dòng dữ liệu vào thì chạy chậm quá (treo máy luôn)

Nhờ MOD gộp bài lại giúp em.
Thân!
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
heocon đã viết:
Oh em làm được rồi anh ạ. Cám ơn anh rất nhiều
Nhưng sao em nhấn nút Lọc 2 lần thì nó lại x2 dữ liệu vậy anh?
Bây giờ em muốn tạo thêm nút Xóa baocao thì viết code như thế nào vậy anh?
Mong anh chỉ giúp.
Bạn dùng thử
PHP:
Sub XoaBaoCao()
Sheets("BaoCao").Range("A2:A65000").ClearContents
End Sub
 
Upvote 0
heocon đã viết:
Em cám ơn mọi người rất nhiều.
1. Chỉ ra các dữ liệu không lọc được (không có trong thư viện), để em có thể biết mà sữa lại.
2. Nhờ MOD gộp bài lại giúp em. Thân!
1./
PHP:
Option Explicit:            Option Base 1

Sub DichTen()
' By Sa_DQ (GiaiPhapExcel.COM)'
 Dim lRow As Long, jZ As Long
 Dim lRw1 As Long, Jw As Long
  
 Application.ScreenUpdating = False
 Sheets("BaoCao").Range("A2:A9999").Clear  '!!'
 
 Sheets("Thu Vien").Select
 lRow = Range("B65432").End(xlUp).Row
 ReDim MDL(lRow, 2) As String
 For jZ = 2 To lRow
    MDL(jZ, 1) = Cells(jZ, 1):          MDL(jZ, 2) = Cells(jZ, 2)
 Next jZ
 Sheets("DuLieu").Select
 lRw1 = Range("A65432").End(xlUp).Row
 ToMau Range(Cells(2, 1), Cells(lRw1, 1)) 'N!!!'
 For jZ = 2 To lRw1
    For Jw = 1 To lRow
        If Cells(jZ, 1) = MDL(Jw, 1) Then
            Sheets("BaoCao").Range("A" & Sheets("BaoCao"). _
                Range("A65432").End(xlUp).Row + 1) = UCase$(MDL(Jw, 2))
            Exit For
        End If
    Next Jw
    If Jw = 1 + lRow Then ToMau Cells(jZ, 1), 33 + Weekday(Date) 'N!!!'
 Next jZ
End Sub
Mã:
[b]Sub ToMau(Rng As Range, Optional CIndex = 2)[/b]
    With Rng.Interior
        .ColorIndex = CIndex:               .Pattern = xlSolid
    End With[b]
End Sub [/b]
 
Upvote 0
Hix... Vẫn không được anh SA_DQ ơi.
EM đổ 5000 dòng dữ liệu nó treo máy luôn nè. Không phát hiện lổi
Mong mọi người giúp em bài này.
Cám ơn tất cả rất nhiều.

Thân!
 
Upvote 0
heocon đã viết:
Hix... Vẫn không được anh SA_DQ ơi.
EM đổ 5000 dòng dữ liệu nó treo máy luôn nè. Không phát hiện lổi
Mong mọi người giúp em bài này.
Cám ơn tất cả rất nhiều.

Thân!
Ý là bạn muốn kiểm tra DuLieu có trong ThuVien??
Tại B2 Sh Dulieu bạn dùng countif là OK, Filter lại những cái = 0
B2=COUNTIF('Thu Vien'!$A$2:$A$61,DuLieu!$A2)
Làm xong rôi mới chạy code đầu tiên của Bác Sa.
 
Upvote 0
Cám ơn mọi người đã giúp em.

Ý là bạn muốn kiểm tra DuLieu có trong ThuVien??
Tại B2 Sh Dulieu bạn dùng countif là OK, Filter lại những cái = 0
B2=COUNTIF('Thu Vien'!$A$2:$A$61,DuLieu!$A2)
Em cũng làm như vậy, nhưng sao lại có 2,3,4 nhỉ?
Số 0 là không có trong thư viện, số là co trong thư viện. Vậy các số còn lại nghĩa gì vậy ạ?

Tại Sheet Thu Vien em đã dùng hàm Upper() chuyển tất cả dữ liệu thành chữ HOA rồi.

Dữ liệu của em chính xác là 57406 dòng, file nặng quá em ko gửi lên được.

Vẫn bị treo máy các anh ơi. Làm cách nào để khắc phục tinh trạng này bây giờ ạh?

Thân!
 
Upvote 0
heocon đã viết:
Dữ liệu của em chính xác là 57406 dòng, file nặng quá em ko gửi lên được.
Vẫn bị treo máy các anh ơi. Làm cách nào để khắc phục tinh trạng này bây giờ ạh?

Phương án 1: Copy toàn bộ các dòng có công thức sau đó PasteSpecial -> Values

Phương án 2: Em ra cửa hàng bán máy vi tính bảo họ cắm thêm Ram cho máy

Phương án 3: nếu muốn gửi File thì làm theo PA1 sau đó dùng WinZip hoặc WinRar nén File lại
 
Upvote 0
heocon đã viết:
Cám ơn mọi người đã giúp em.


Em cũng làm như vậy, nhưng sao lại có 2,3,4 nhỉ?
Số 0 là không có trong thư viện, số là co trong thư viện. Vậy các số còn lại nghĩa gì vậy ạ?

Tại Sheet Thu Vien em đã dùng hàm Upper() chuyển tất cả dữ liệu thành chữ HOA rồi.

Dữ liệu của em chính xác là 57406 dòng, file nặng quá em ko gửi lên được.

Vẫn bị treo máy các anh ơi. Làm cách nào để khắc phục tinh trạng này bây giờ ạh?

Thân!
Mèn ơi! nếu count > 0 là có hơn 0 lần thì OK còn chỉ sửa những cái mà ra số 0 thôi.

ThuNghi đã viết:
Mèn ơi! nếu count > 0 là có hơn 0 lần thì OK còn chỉ sửa những cái mà ra số 0 thôi.
Bác Sa ơi, em không biết cách chuyển sang phần code.
 
Lần chỉnh sửa cuối:
Upvote 0
To HeoCon

1.* Hãy xài các file nén đi; Trên DĐ cũng nói đến nhiều rồi!
2.* Trước mắt tách ra làm nhiều file gởi lên:
a./ Sheets("Thu Vien")
b./ Sheets("DuLieu") tách tối đa mà diễn đàn cho phép tải lên & tải lần lượt theo trật tự từng workbook(i)
(Bạn nào có cách khác hay hơn chỉ giúp bạn í với!)

Chú ý: TRong macro mình chỉ ghi '9999'; Bạn tìm đến đó & sửa lại là '99999' (để phù hợp với dữ liệu của bạn mà!)

Cách chạy thử macro: Lấy đơn vị là 5.000 record, thêm lần lượt từng đơn vị records & cho diễn đàn biết nó đứng ở đơn vị nào;
Tiếp theo: Xóa hết các đơn vị n-1 đi; Bắt đầu lấy từ đơn vị thứ n (khi máy đứng) trở đi; Sau mỗi lần nối 1 đơn vị records thì chạy macro xem như thế nào!
Chú í thứ hai: Một khi đã đổi hết cột thứ 2 trong 'Thu Vien' sang chữ hoa, thì bỏ hàm Ucase$() trong macro giúp nha!

(hờ tin thắng lợi từ bạn!
 
Upvote 0
Tôi dùng tạm công thức ... vlookup nhé. Tôi không viết VBA gì cả, nên bạn đừng nhấn vào nút lọc.

Thực ra nếu có thể giải quyết bằng công thức thì chắc chắn sẽ nhanh hơn dùng VBA (kinh nghiệm thực tế).

Nếu sheet của bạn có hơn 57 ngàn dòng (tức là gần đến giới hạn của EX) thì chắc chắn sẽ chạy chậm, không có cách nào khắc phục tốt hơn là ... đừng làm bằng Excel nữa, mà nên chuyển sang một Cơ sở dữ liệu chuyên nghiệp hơn, vd Access.
 

File đính kèm

Upvote 0
Treo Máy

Hix...Em bi treo máy hoài.
Em gửi file nhỏ nhất ên cho mọi người xem và xữ lý giúp em. Em chia làm nhiều file nhỏ, mọi người cố gắng nối lại nha.
Chân thành cám ơn sự nhiệt tình của các anh chị!
 

File đính kèm

Upvote 0
Theo tôi dùng vlookup như workman là ok và dễ nhất, thêm dk if nếu isna thì =1.
Với lại bạn muốn có tên đúng bên sh dulieu thì hay hhơn, như vậy mới biết tên gần đúng thế nào và phải thay thế = tên đúng. Chớ còn KQ ở Sh BaoCao chả có nghĩa gì.
 
Upvote 0
Hix...Em bi treo máy hoài.
Em gửi file nhỏ nhất ên cho mọi người xem và xữ lý giúp em. Em chia làm nhiều file nhỏ, mọi người cố gắng nối lại nha.
Chân thành cám ơn sự nhiệt tình của các anh chị!

Sau khi nối lại & dùng macro sau cùng, máy của mình mất 3 phút để hoàn tất.

Một việc khác nửa là thư viện của bạn còn chưa đạt ở chổ, có rất nhiều khoảng trống thừa trong các từ ở cột 'A';
Để thấy khiếm khuyết này, bạn hãy sort dữ liệu theo cột 'A' sẽ rõ ngay!
Mình viết cho bạn macro này để khỏi làm bằng tay, cái chuyện cắt bỏ các khoảng trắng í đi:
PHP:
Option Explicit

Sub ThuVien()
 Dim lRow As Long, iJ As Long
 Sheets("Thu Vien").Select
 Application.ScreenUpdating = False
 lRow = Range("A65432").End(xlUp).Row
 For iJ = 2 To lRow
    With Cells(iJ, 1)
        If Len(.Value) > Len(Trim(.Value)) Then
            .Value = Trim(.Value)
        End If
    End With
 Next iJ
End Sub
--=0 }}}}} :=\+ )(&&@@
Bổ sung:
HeoCon chạy thử file này xem mất bao nhiêu phút?!
 
Lần chỉnh sửa cuối:
Upvote 0
Cám ơn anh và mọi người!
  • Em chép 2 đoạn Code mới nó không chạy. -\\/.
  • Cột A bên sheet Thuvien là du liệu gần đúng, dùng để tham chiếu mà. Nếu xóa khoảng trắng thì các dữ liệu # ko thể dựa và để tham chiếu. ;;;;;;;;;;; (Ko nên thay đổi dữ liệu cột A)
  • Em đã thử bài này với nhiều máy, KQ máy nào cũng treo!$@!!
  • Xóa dữ liệu trùng là ý kiến hay, Tại cột A nếu thấy 2 dòng trùng nhau thì lấy 1 dòng (cái này em làm dc)
Tóm lại bài của "Sư phụ" rất tuyệt, nhưng làm sao cho nó nhanh (ko treo máy) thì tuyệt vời}}}}}

Anh chỉnh lại giúp em nhé.

Thân!
-\\/. -\\/. -\\/. -\\/. -\\/. -\\/.
Bổ sung:
Em đã chạy thử file mới của anh Sa_DQ rùi, KQ gần 10 phút mới xong. Còn file 57000 dòng thì 45 phút. hix....
 
Lần chỉnh sửa cuối:
Upvote 0
File mới của "sư phụ" máy em chạy gần 10 phút.
Với dữ liệu 57000 dòng thì 45 phút hix....
"Sư phụ" còn nhớ bài kế toán lần trước không? Bài đó cũng dựa vào thư viện đó.

Em đã thư file của anh Workman rùi, tốc độ cũng chậm & cho kết quả thì double. Em ko bit tại sao nữa.

Thân!
 
Upvote 0
Nổ lực tăng tốc đã được đền đáp

HeoCon thử đoạn mã sau xem tăng tốc được mấy lần!
Chú ý các dòng lệnh có đánh số là mới thêm hay sửa đổi so với trước

(Xin chuyển sang xem Code tại bài 18 & file tại bài 17, cảm ơn!)
PHP:
Option Explicit:          Option Base 1

Sub ToMau(Rng As Range, Optional CIndex = 2)
    With Rng.Interior
        .ColorIndex = CIndex:               .Pattern = xlSolid
    End With
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Em đã chạy thử File mới kết quả chạy rất tốt và nhanh.
Nhưng em ko hiểu anh bôi màu và đánh số bên sheet Thu viện để làm gì? Em nhìn rối quá ko hiểu. Sao các dữ liệu sai bên thu vien anh làm "sạch" hết rồi.
Sau này em thêm bớt dữ liệu bên thư viện thì làm sao?
Anh đánh thêm dấu (x) vào dữ liệu ko lôc đc nhé
Em gửi file anh xem nha.

Thân! )(&&@@
 

File đính kèm

Upvote 0
heocon đã viết:
Em đã chạy thử File mới kết quả chạy rất tốt và nhanh.
Nhưng em ko hiểu anh bôi màu và đánh số bên sheet Thu viện để làm gì? Em nhìn rối quá ko hiểu. Sao các dữ liệu sai bên thu vien anh làm "sạch" hết rồi.
Sau này em thêm bớt dữ liệu bên thư viện thì làm sao?
Anh đánh thêm dấu (x) vào dữ liệu ko lôc đc nhé
Em gửi file anh xem nha. Thân! )(&&@@
Mình chưa xem file, nhưng thế này:
1*/ Bôi màu bên file thư viện: Đó là những dòng trùng nhau, Em xem lại, nếu đúng là không cần thiết thì bỏ đi bớt, máy sẽ chạy nhanh hơn;
Hình như các dòng đã được xếp theo 1 trật tư nào đó rất dễ kiểm mà!
2*/ Em cứ việc thêm dữ liệu mới vô thư viện, có sao đâu; Chỉ có điều càng thêm thì macro càng cần nhiều thời gian cho nó hơn thôi!
3*/ Đã tô màu rồi; còn muốn đánh dấu để xếp lại đễ tìm, phải không?
Nếu không phải thì cho biết mục đích đánh dấu để tiếp tục làm gì vậy?
Xanh.jpg

Bổ sung: Viết luôn cho nè!
PHP:
Sub DichTen()
' By Sa_DQ (GiaiPhapExcel.COM)'
1 Dim Timer_ As Double:                  Dim STemp As String
 Dim lRow As Long, jZ As Long
 Dim lRw1 As Long, Jw As Long
   
 Timer_ = Timer
 Application.ScreenUpdating = False
 Sheets("BaoCao").Range("A2:A" & Range("A65432").End(xlUp).Row + 9).Clear
  
 Sheets("Thu Vien").Select
 lRow = Range("B65432").End(xlUp).Row
 ReDim MDL(lRow, 2) As String
 For jZ = 2 To lRow
    MDL(jZ, 1) = Cells(jZ, 1):          MDL(jZ, 2) = Cells(jZ, 2)
 Next jZ
 Sheets("DuLieu").Select
 lRw1 = Range("A65432").End(xlUp).Row
 ToMau Range(Cells(2, 1), Cells(lRw1, 1))
 For jZ = 2 To lRw1
2    If Cells(jZ, 1) = STemp Then
3        With Sheets("BaoCao").Range("A" & Sheets("BaoCao"). _
            Range("A65432").End(xlUp).Row + 1)
4            .Value = .Offset(-1)
5        End With
6        GoTo DenDay
7    End If
    For Jw = 1 To lRow
        If Cells(jZ, 1) = MDL(Jw, 1) Then
            Sheets("BaoCao").Range("A" & Sheets("BaoCao"). _
                Range("A65432").End(xlUp).Row + 1) = MDL(Jw, 2)
            Sheets("Thu Vien").Cells(Jw, 4).Value = Jw
8            STemp = Cells(jZ, 1):                      Exit For
        End If
    Next Jw
    If Jw = 1 + lRow Then
        Cells(jZ, 2) = " x"    ' <= New'
        ToMau Cells(jZ, 1), 33 + Weekday(Date)
    End If
9 DenDay:
 Next jZ
 MsgBox Str(Timer - Timer_), , Str(jZ) & " Records"
End Sub
Hãy chép cái này đè lên cái cũ!
Chúc Vui Với Xuân Về!
 
Lần chỉnh sửa cuối:
Upvote 0
1*/ Bôi màu bên file thư viện: Đó là những dòng trùng nhau, Em xem lại, nếu đúng là không cần thiết thì bỏ đi bớt, máy sẽ chạy nhanh hơn;
dữ liệu trùng là do Bác SA làm sạch dữ liệu (xóa khoảng trắng), nhưng dữ liệu gốc rất nhìu rác. Chẳng lẽ trước khi Lọc mình phải làm sạch sao?

2*/ Em cứ việc thêm dữ liệu mới vô thư viện, có sao đâu; Chỉ có điều càng thêm thì macro càng cần nhiều thời gian cho nó hơn thôi!

Khi em thêm dữ liệu lại có khoảng trắng hay rác thì phãi làm sạch trước à?

3*/ Đã tô màu rồi; còn muốn đánh dấu để xếp lại đễ tìm, phải không?
Đúng như vậy đó ạ.
 
Upvote 0
heocon đã viết:
dữ liệu trùng là do Bác SA làm sạch dữ liệu (xóa khoảng trắng), nhưng dữ liệu gốc rất nhìu rác. Chẳng lẽ trước khi Lọc mình phải làm sạch sao?
Khi em thêm dữ liệu lại có khoảng trắng hay rác thì phãi làm sạch trước à?
Đúng như vậy đó ạ.

1* Muốn sống chung với rát, cũng được thôi; Cảnh báo là tốn thời gian hơn!;

2* Cứ việc thêm dữ liệu bất kỳ & như đã nói ở trường hợp trên;

3* & macro cuối (bài 18) đã làm được điều đó!

* * * Tốc độ giờ còn là bao nhiêu phút?? * * *​
 
Upvote 0
Thử 1 phải mới đó là dùng chức năng thay thế của Excel cho tốc độ cao hơn:

PHP:
Sub BaoCao()
    On Error Resume Next
    Dim TimeR_ As Double
    TimeR_ = Timer
    Call XoaBC
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    'S02.Select
    Dim eRDl As Long, eRTv As Long
    eRDl = S01.Range("A65536").End(xlUp).Row
    eRTv = S02.Range("A65536").End(xlUp).Row
    
    With S03.Range("A2:A" & eRDl)
        .FormulaR1C1 = "=TRIM(DULIEU!RC)"
        .Calculate
        .Value = .Value
    End With
     
    Dim aTenDung As Range, aKH As Range, i As Long, j As Long
    
    Set aTenDung = S02.Range("B2:B" & eRTv)
    Set aKH = S02.Range("A2:A" & eRTv)
    
    S03.Select
    S03.Range("A2:A" & eRDl).Select
    For i = 1 To eRTv
        Selection.Replace Trim(aKH(i)), "-999" & aTenDung(i), LookAt:=xlWhole, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
        If (i = 1) Or (i Mod 10 = 0) Or (i = eRTv) Then _
            Application.StatusBar = "Tinh toan: " & Format(i / eRTv * 95, "0.00") & "%"
    Next i
    S03.Select
    For i = 2 To eRDl
        If Left(Range("A" & i).Value, 4) <> "-999" Then
            Range("B" & i).Value = "AAA Not In List"
            With Range("A" & i & ":B" & i).Interior
                .ColorIndex = 6
                .Pattern = xlSolid
            End With
        'Else
            'Range("A" & i).Value = Right(Range("A" & i).Value, Len(Range("A" & i).Value) - 4)
        End If
       If (i = 2) Or (i Mod 100 = 0) Or (i = eRDl) Then _
        Application.StatusBar = "Tinh toan: " & Format(95 + i / eRDl * 2, "0.00") & "%"
    Next i

    S03.Range("A2:A" & eRDl).Replace "-999", "", LookAt:=xlPart, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
        Application.StatusBar = "Tinh toan: 99.00%"
    S03.Range("A2").Select
    S03.Select
     Application.StatusBar = ""
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
    MsgBox "Tinh toan: 100%" & vbCr & "Ket thuc het " & Format(Timer - TimeR_, "0.00") & "s"
End Sub
 
Upvote 0
Rất mong được sự chỉ giáo của các thành viên. Bây giờ mình có file Bảng Tổng hợp. Từ bảng tổng hợp mình có cài công thức trong các file khác : dân cư, quy hoạch, cưỡng chế. Nhưng sau khi mình lọc được rồi nhưng các file đó, giả sử file dân cư thứ tự không được liền kề nhau. Có cách nào cho thứ tự liền kề nhau được không và dùng hàm gì ? Mong được chỉ giáo ? Và số thứ tự của các file dân cư, quy hoạch, cưỡng chế cũng được đánh số tự động. Mình xin gửi file đính kèm.
 

File đính kèm

Upvote 0
Excel mà bạn muốn trình bày theo kiểu Word thì có nước tự làm khó mình thôi... Tên Phường sao bạn ko đặt vào 1 cột nữa, như vậy có phải là dễ hơn ko?
ANH TUẤN
 
Upvote 0
1. Vấn đề cách dòng
Bạn dùng AutoFilter chọn non blank là được, với điều kiện dòng tiêu đề không merge cell. Nếu vẫn cần merge cell thì tạo dòng tiêu đề phụ đánh số từ 1 đến hết cột.
2. Vấn đề số thứ tự:
A8=1
A9=IF(B9<>"",MAX($A$8:A8),"")
với điều kiện các tên phường không nằm ở cột A hoặc B hoặc AmergeB, mà ở cột C. tên phường ở C nếu bạn canh phải và tăng alignment thì cũng thể hiện như trong B vậy.
 
Lần chỉnh sửa cuối:
Upvote 0
Bài này tôi nghĩ là ko đơn giãn thế đâu.. lý do là số lượng người trong 1 phường ta chưa biết trước... Thế thì lọc như thế nào đễ hết phường này lại tới phường kia?
Anh ptm có cách gì dùng VBA ko? Chứ bằng công thức thì tôi gần như bó tay rồi.. cố gắng vẫn dc nhưng file sẽ rất nặng vì các công thức mãng...
Nếu tác giã chấp nhận cho tên phường vào 1 cột riêng thì mọi việc sẽ dễ dàng hơn rất nhiều
ANH TUẤN
 
Upvote 0
Nếu tên phường đặt riêng 1 cột thì mình xin các cao thủ làm thử giúp xem. Coi Có đúng với ý của mình không.
 
Upvote 0
Bài này có cách gì dùng VBA ko?
Khi dùng VBA thì không có vấn đề với ô trộn lắm; nhưng lại có vấn đề khác;
Và mình đã sửa lại CSDL của bạn í xíu rồi; (trong file đính kèm)
PHP:
Option Explicit

Sub CopyDanCu()
 Dim lRow As Long, jZ As Long
 Dim StrC As String
 Sheets("Tong Hop").Select:                  Application.ScreenUpdating = False
 StrC = Sheets("Dan Cu").Range("B" & Sheets("Dan Cu").Range("B65432").End(xlUp).Row + 1)
 lRow = Range("B65432").End(xlUp).Row
 For jZ = 7 To lRow
    With Cells(jZ, 1)
        If InStr(.Value, "PHÖÔØNG") > 0 Then
            Cells(jZ, 1).Copy Destination:=Sheets("Dan Cu").Range("B" & _
                Sheets("Dan Cu").Range("B65432").End(xlUp).Row + 1)
        ElseIf UCase$(.Offset(, 6).Value) <> "" Then
            .Offset(, 1).Resize(1, 22).Copy Destination:=Sheets("Dan Cu").Range("B" & _
                Sheets("Dan Cu").Range("B65432").End(xlUp).Row + 1)
        End If
    End With
 Next jZ
End Sub

Mình khuyên tác giả của topic: mặc xong quần áo mới tô điểm; không nên mới mặc quần xong đã đi trang điểm!
Vui nha, & đừng zận!
 

File đính kèm

Upvote 0
Tôi thấy điều quan trọng nhất ko phải là giãi pháp đễ trích lọc mà là việc bố trí dử liệu...
Tôi gợi ý bạn 1 cách bố trí khác, như trong file đính kèm cũa tôi thì thậm chí bạn ko cần dùng VBA hay bất kỳ công thức nào luôn... Cứ AutoFiler là ra tất những gì bạn muốn...
Ngay cột Quy hoạch cần gì chia làm 3 cột rồi đánh dấu X cho tốn công thế... Làm như tôi vậy là tạm ổn rồi... còn những món li ti khác bạn tự rút gọn nhé... Nên theo lời khuyên cũa anh SA_DQ là ngon lành...
ANH TUẤN
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Chào anhtuan1066. Xin cho mình hỏi : ở Biên Hòa có địa điểm nào dạy VBA không vậy ? Mình nghiên cứu hoài mà không biết.
 
Upvote 0
Tôi cũng đang ở Biên Hòa, chã thấy ở đâu dạy cã.. mà tôi thấy lên GPE này học là ngon rồi còn gì
 
Upvote 0

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

Back
Top Bottom