Tách dữ liệu theo mã số và fill color (1 người xem)

  • Thread starter Thread starter LYSM
  • Ngày gửi Ngày gửi

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

LYSM

Thành viên thường trực
Tham gia
16/3/11
Bài viết
290
Được thích
26
Chào các bác, Em đang muốn lập 1 bảng tách dữ liệu theo mã số và theo fill color. Phần tách theo mã số hiện tại em đã lấy code của bác "Lê Duy Thương" và modify một chút cho phù hợp. Giờ do nhu cầu phát sinh em muốn thêm 1 sheet tách theo fill color, nhờ các bác viết code giúp em với. Lưu ý: em chỉ tách những mã số liên quan đến fill color có mầu đỏ (có thể trong file của em có nhiều màu). Các mã số có fill color màu đỏ vẫn xuất hiện bình thường trong các sheet tách theo mã số.Kính mong các bác giúp đỡ, em cảm ơn các bác nhiều!
 
Lần chỉnh sửa cuối:
Chào các bác,
Em đang muốn lập 1 bảng tách dữ liệu theo mã số và theo fill color. Phần tách theo mã số hiện tại em đã lấy code của bác "Lê Duy Thương" và modify một chút cho phù hợp. Giờ do nhu cầu phát sinh em muốn thêm 1 sheet tách theo fill color, nhờ các bác viết code giúp em với.
Lưu ý: em chỉ tách những mã số liên quan đến fill color có mầu đỏ (có thể trong file của em có nhiều màu). Các mã số có fill color màu đỏ vẫn xuất hiện bình thường trong các sheet tách theo mã số.
Kính mong các bác giúp đỡ, em cảm ơn các bác nhiều!
Nhìn vào file đính kèm thì biết bạn đang sử dụng Excel 2007 trở lên. Và với các phiên bản này thì bạn có thể lọc theo màu sắc mà. Bạn cứ thử Record macro xem nó ra cái gì.
 
Chào các bác,
Em đang muốn lập 1 bảng tách dữ liệu theo mã số và theo fill color. Phần tách theo mã số hiện tại em đã lấy code của bác "Lê Duy Thương" và modify một chút cho phù hợp. Giờ do nhu cầu phát sinh em muốn thêm 1 sheet tách theo fill color, nhờ các bác viết code giúp em với.
Lưu ý: em chỉ tách những mã số liên quan đến fill color có mầu đỏ (có thể trong file của em có nhiều màu). Các mã số có fill color màu đỏ vẫn xuất hiện bình thường trong các sheet tách theo mã số.
Kính mong các bác giúp đỡ, em cảm ơn các bác nhiều!

Thử code này xem sao
PHP:
Sub loc_mau_do()
Dim vung As Range
With Sheets("du lieu vao")
   Set vung = .Range(.[A2], .[A65536].End(3)).Resize(, 15)
   With vung
      .AutoFilter 15, RGB(255, 0, 0), xlFilterCellColor
      .SpecialCells(12).Copy Sheets("Thong bao").[B9]
   End With
   .AutoFilterMode = False
End With
With Sheets("Thong bao")
   .Range(.[B10], .[B10].End(4)).Offset(, -1) = [row(a:a)]
End With
End Sub
 
Nhìn vào file đính kèm thì biết bạn đang sử dụng Excel 2007 trở lên. Và với các phiên bản này thì bạn có thể lọc theo màu sắc mà. Bạn cứ thử Record macro xem nó ra cái gì.
Cái này em còn gà lắm, bác chỉ giúp em rõ hơn được không?
 
Thử code này xem sao
PHP:
Sub loc_mau_do()
Dim vung As Range
With Sheets("du lieu vao")
   Set vung = .Range(.[A2], .[A65536].End(3)).Resize(, 15)
   With vung
      .AutoFilter 15, RGB(255, 0, 0), xlFilterCellColor
      .SpecialCells(12).Copy Sheets("Thong bao").[B9]
   End With
   .AutoFilterMode = False
End With
With Sheets("Thong bao")
   .Range(.[B10], .[B10].End(4)).Offset(, -1) = [row(a:a)]
End With
End Sub
Phần cột O em muốn tách các mã số của chính cột đó được bôi màu đỏ mà không liên quan gì đến vùng dữ liệu từ cột A-N, tóm lại là vùng dữ liệu của em chia làm 2 phần độc lập cần tách. Bác xem lại file đính kèm giúp em nhé.
Thêm nữa bác có thể gắn luôn code vào file giúp em được không? khi em copy code của bác vào nó sẽ ra 1 macro mới là "loc_mau_do" khi đó em nhấn vào buton "RUN" nó không chạy, phải gán lại macro cho nó. Em muốn khí nhấn "RUN" nó chạy đồng thời cả macro "TACH" và "loc_mau_do" của bác. Em gà về VBA lắm nên rất mong bác giúp thì giúp cho chót :)
Em cảm ơn bác nhiều!
 
Lần chỉnh sửa cuối:
Vậy xin hỏi bạn biết cách lọc dữ liệu theo màu bằng Auto Filter trong Excel 2007 không?
Em chỉ biết lọc thủ công bằng cách ấn tổ hợp ctrl+shift+L thôi bác. Macro em gần như không biết gì :) nhưng bảng dữ liệu của em mỗi ngày thì dữ liệu lại nhiều thêm và mỗi ngày 1 người làm nên dùng VBA là hợp lý nhất bác ạ. Vài lời chia sẻ để bác thông cảm
 
Lần chỉnh sửa cuối:
Bác ơi, vùng dữ liệu từ cột A-N em muốn tách các mã số theo các chỉ tiêu %béo, SNF có màu đỏ mà không liên quan gì đến cột O. Phần cột O em muốn tách các mã số của chính cột đó được bôi màu đỏ mà không liên quan gì đến vùng dữ liệu từ cột A-N, tóm lại là vùng dữ liệu của em chia làm 2 phần độc lập cần tách. Bác xem lại file đính kèm giúp em nhé.
Thêm nữa bác có thể gắn luôn code vào file giúp em được không? khi em copy code của bác vào nó sẽ ra 1 macro mới là "loc_mau_do" khi đó em nhấn vào buton "RUN" nó không chạy, phải gán lại macro cho nó. Em muốn khí nhấn "RUN" nó chạy đồng thời cả macro "TACH" và "loc_mau_do" của bác. Em gà về VBA lắm nên rất mong bác giúp thì giúp cho chót :)
Em cảm ơn bác nhiều!
Thử vầy coi sao
PHP:
Sub loc_mau_do()
Dim data(), i, kq(), k, n
With Sheets("du lieu vao")
   data = .Range(.[A3], .[A65536].End(3)).Resize(, 15).Value
End With
ReDim kq(1 To UBound(data), 1 To 16)
For i = 1 To UBound(data)
   If data(i, 3) < 3.15 Or data(i, 5) < 8.36 Then
      k = k + 1
      kq(k, 1) = k
      For n = 2 To 16
         kq(k, n) = data(i, n - 1)
      Next
   End If
Next
Sheets("Thong bao").[A10].Resize(1000, 16).ClearContents
Sheets("Thong bao").[A10].Resize(k, 16) = kq
End Sub
Thêm dòng loc_mau_do trước câu End Sub trong nút RUN thi code sẽ chạy
 
Thử vầy coi sao
PHP:
Sub loc_mau_do()
Dim data(), i, kq(), k, n
With Sheets("du lieu vao")
   data = .Range(.[A3], .[A65536].End(3)).Resize(, 15).Value
End With
ReDim kq(1 To UBound(data), 1 To 16)
For i = 1 To UBound(data)
   If data(i, 3) < 3.15 Or data(i, 5) < 8.36 Then
      k = k + 1
      kq(k, 1) = k
      For n = 2 To 16
         kq(k, n) = data(i, n - 1)
      Next
   End If
Next
Sheets("Thong bao").[A10].Resize(1000, 16).ClearContents
Sheets("Thong bao").[A10].Resize(k, 16) = kq
End Sub
Thêm dòng loc_mau_do trước câu End Sub trong nút RUN thi code sẽ chạy
Đúng là code có chạy thật bác ạ, nhưng phần mã số ở cột O tách ra không đúng, vả lại dữ liệu tách ra mất hết màu, em muốn nó giữ nguyên màu của dữ liệu gốc bác ạ
 
Bài này dùng CF để tô màu, nhưng khi dùng code để kiểm tra những ô có tô màu thì không kiểm tra được, chỉ kiểm tra được những ô nào tô màu trực tiếp. Mong các anh chị giải thích giúp và gợi ý hướng xử lý.
 
Mong các bác giúp đỡ em giải quyết vấn đề này với, chứ làm thủ công em mất rất nhiều thời gian
em cảm ơn tất cả mọi người đã đọc theard
 
Bài này dùng CF để tô màu, nhưng khi dùng code để kiểm tra những ô có tô màu thì không kiểm tra được, chỉ kiểm tra được những ô nào tô màu trực tiếp. Mong các anh chị giải thích giúp và gợi ý hướng xử lý.
Nếu sử dụng CF để tô màu thì có lẽ là phải dựa vào điều kiện của CF để lọc, cứ hàng nào thỏa mãn điều kiện thì lọc qua. Nếu làm trực tiếp thì có vẻ chậm, nên dùng mảng thì tốc độ sẽ được cải thiện hơn (nói vậy thôi chứ đụng đến mảng là em xin đầu hàng)
 
Nếu sử dụng CF để tô màu thì có lẽ là phải dựa vào điều kiện của CF để lọc, cứ hàng nào thỏa mãn điều kiện thì lọc qua. Nếu làm trực tiếp thì có vẻ chậm, nên dùng mảng thì tốc độ sẽ được cải thiện hơn (nói vậy thôi chứ đụng đến mảng là em xin đầu hàng)
Thì bài 8 đã dùng dk của CF để lọc rồi đó, nhưng vẫn thắc mắc làm sao xác định được cái ô nào có tô màu đây. Nhìn thấy đỏ hoe thế mà không lọc được mới cay chứ.
 
Thì bài 8 đã dùng dk của CF để lọc rồi đó, nhưng vẫn thắc mắc làm sao xác định được cái ô nào có tô màu đây. Nhìn thấy đỏ hoe thế mà không lọc được mới cay chứ.
Đúng là chủ topic quá "lậm" CF, trừ cột O sheet "du lieu vao", làm cho rắc rối thêm.
Do tác giả bảo rất nhiều màu nhưng chỉ mới thử với 1 màu đỏ nên càng rối.
Tôi nghĩ phải dùng 1 dòng chuẩn - Tạm lấy vùng B1:N1 - để so sánh, dữ liệu nào đúng điều kiện thì lấy qua sheet "Thong bao", bên sheet "Thong bao" vẫn phải dùng CF cho các cột giống như sheet "du lieu vao", trừ cột P.
 

File đính kèm

Đúng là chủ topic quá "lậm" CF, trừ cột O sheet "du lieu vao", làm cho rắc rối thêm.
Do tác giả bảo rất nhiều màu nhưng chỉ mới thử với 1 màu đỏ nên càng rối.
Tôi nghĩ phải dùng 1 dòng chuẩn - Tạm lấy vùng B1:N1 - để so sánh, dữ liệu nào đúng điều kiện thì lấy qua sheet "Thong bao", bên sheet "Thong bao" vẫn phải dùng CF cho các cột giống như sheet "du lieu vao", trừ cột P.
Cám ơn bác, đây là 1 ý tưởng hay, có 1 điều là cột "O" em cũng dùng CF ạ, vì em tưởng CF hay tô thủ công cũng không ảnh hưởng gì đến code nên em mới tô bằng tay cho tiện. Những mã có màu đỏ là những mã không xuất hiện trong cột A (cột O là 1 danh sách mã số cố định). Tiện đây nếu bác dùng code để lọc giúp em những mã của cột O mà không có trong cột A thì càng tốt. Do em không biết dùng code mới phải dùng CF
 
Lần chỉnh sửa cuối:
Cám ơn bác, đây là 1 ý tưởng hay, có 1 điều là cột "O" em cũng dùng CF ạ, vì em tưởng CF hay tô thủ công cũng không ảnh hưởng gì đến code nên em mới tô bằng tay cho tiện. Những mã có màu đỏ là những mã không xuất hiện trong cột A (cột O là 1 danh sách mã số cố định). Tiện đây nếu bác dùng code để lọc giúp em những mã của cột O mà không có trong cột A thì càng tốt. Do em không biết dùng code mới phải dùng CF
Nếu vậy thì trong file cũ của bạn tô màu đỏ trong cột O dư 1 dòng.
Tôi dùng CF chỉ có 7 dòng đúng điều kiện thôi.
Bạn kiểm tra lại nhé.
Cột P sheet "Thong bao" để bạn tự quyết tô màu hay không.
Chú ý, file càng nhiều màu mè, khi dữ liệu nhiều dung lượng càng lớn.
 

File đính kèm

Nếu vậy thì trong file cũ của bạn tô màu đỏ trong cột O dư 1 dòng.
Tôi dùng CF chỉ có 7 dòng đúng điều kiện thôi.
Bạn kiểm tra lại nhé.
Cột P sheet "Thong bao" để bạn tự quyết tô màu hay không.
Chú ý, file càng nhiều màu mè, khi dữ liệu nhiều dung lượng càng lớn.
Vâng, chỗ đó em tô nhầm. Sau khi test code của bác em thấy khá ngon, nhưng lại phát sinh một vấn đề là những mã số có đầu số "B.thuong..." cũng vào sheet "thong bao" mà em lại không muốn nó vào đó (nó đã vào 1 sheet riêng biệt "B."). Bác có giải pháp nào khắc phục giúp em cái này không? Có thể như thay vì tách theo chỉ tiêu 2 cột D và F thì tách cột A khi mã số được to màu vậy (dùng CF), đây chỉ là ý tưởng của em, bác có ý tưởng gì hay hơn thì cứ cho vào.
Thật phiền bác quá nhưng mong bác hãy giúp em nốt.
Em cảm ơn bác rất nhiều!
sorry bác, em đã up lại file đính kèm, file nãy có pass
 
Lần chỉnh sửa cuối:
Giờ thì đã hiểu ý của chủ topic rồi nên code cũng khá đơn giản thôi
PHP:
Sub loc()
Dim r As Long
[A10].Resize(1000, 16).Clear
With Sheets("Du lieu vao")
   .[A2:N10000].AdvancedFilter 2, [Q1:R3], [B9:O9]
   .[C3:E3].Copy
   Range([D10], [D65536].End(3)).Resize(, 3).PasteSpecial 4
   Range([D10], [D65536].End(3)).Offset(, -3) = [row(a:a)]
   For r = 3 To .[O65536].End(3).Row
      If .[A:A].Find(.Cells(r, 15).Value, , , 2) Is Nothing Then
         .Cells(r, 15).Copy [P65536].End(3).Offset(1)
      End If
   Next
   [A9].CurrentRegion.Borders.Value = 1
End With
End Sub
 

File đính kèm

Giờ thì đã hiểu ý của chủ topic rồi nên code cũng khá đơn giản thôi
PHP:
Sub loc()
Dim r As Long
[A10].Resize(1000, 16).Clear
With Sheets("Du lieu vao")
   .[A2:N10000].AdvancedFilter 2, [Q1:R3], [B9:O9]
   .[C3:E3].Copy
   Range([D10], [D65536].End(3)).Resize(, 3).PasteSpecial 4
   Range([D10], [D65536].End(3)).Offset(, -3) = [row(a:a)]
   For r = 3 To .[O65536].End(3).Row
      If .[A:A].Find(.Cells(r, 15).Value, , , 2) Is Nothing Then
         .Cells(r, 15).Copy [P65536].End(3).Offset(1)
      End If
   Next
   [A9].CurrentRegion.Borders.Value = 1
End With
End Sub
Bác ơi, có vấn đề mới phát sinh như ở #17, bác xem xét giúp em với. Em cảm ơn bác nhiều!
 
"Hoy" em hỏng mần nữa, anh Ba Tê lo phần cuối nha. Em bị out rồi.
 
Bác ơi, có vấn đề mới phát sinh như ở #17, bác xem xét giúp em với. Em cảm ơn bác nhiều!
Nhớ lần sau đừng gởi file có pass word lên GPE nhé.
Lúc nãy nhìn thấy PW nên "đi luôn".
Người ta giúp công khai cho bạn, còn bạn lại dùng PW, nhìn thấy là "tự ái" rồi.
Thử lại file này với code Tach_GPE xem có "tốc độ" hơn file cũ không?
Dùng CF để kẻ khung, tô màu nhiều quá làm file ỳ ạch.
 

File đính kèm

Nhớ lần sau đừng gởi file có pass word lên GPE nhé.
Lúc nãy nhìn thấy PW nên "đi luôn".
Người ta giúp công khai cho bạn, còn bạn lại dùng PW, nhìn thấy là "tự ái" rồi.
Thử lại file này với code Tach_GPE xem có "tốc độ" hơn file cũ không?
Dùng CF để kẻ khung, tô màu nhiều quá làm file ỳ ạch.

Sorry bác, không phải em dùng psw vì mục đích giữ làm của riêng, đây là file em tải thẳng từ công ty về. File thì mọi người dùng chung nhưng em phải chịu trách nhiệm về tính đúng đắn của nó. Nếu không đặt psw người khác vô tình làm hỏng hay sửa code thì hậu quả sẽ rất khôn lường. Bác thông cảm cho em
 
Nhớ lần sau đừng gởi file có pass word lên GPE nhé.
Lúc nãy nhìn thấy PW nên "đi luôn".
Người ta giúp công khai cho bạn, còn bạn lại dùng PW, nhìn thấy là "tự ái" rồi.
Thử lại file này với code Tach_GPE xem có "tốc độ" hơn file cũ không?
Dùng CF để kẻ khung, tô màu nhiều quá làm file ỳ ạch.
Bác Ba Tê ơi, xin bác giúp em thêm lần nữa,
Bây giờ em muốn tách các mã số ở cột O theo thêm 1 điều kiện nữa là nếu ngày ở cột Q<= today thì sẽ tách các mã số có đầu sô tương ứng với dòng đó ở cột P mà không xuất hiện trong cột A (các mã số bôi hồng trên cột O đó bác). Ví dụ thế này nhé: hôm nay là ngày 04/05/2013 thì chỉ tách các mã số có đầu số: HA, BS, BH, DQ. Đến ngày mai 05/05/2013 sẽ tách thêm các mã số có đầu số VI. Lưu ý là các mã số ở cột O có đầu số trên chỉ được tách khi thỏa mãn đồng thời cả 2 điều kiện là không xuất hiện trong cột A và có ngày trên cột Q<= ngày hôm nay.
Em đội ơn bác nhiều!
 
Lần chỉnh sửa cuối:
Bác Ba Tê ơi, xin bác giúp em thêm lần nữa,
Bây giờ em muốn tách các mã số ở cột O theo thêm 1 điều kiện nữa là nếu ngày ở cột Q<= today thì sẽ tách các mã số có đầu sô tương ứng với dòng đó ở cột P mà không xuất hiện trong cột A (các mã số bôi hồng trên cột O đó bác). Ví dụ thế này nhé: hôm nay là ngày 04/05/2013 thì chỉ tách các mã số có đầu số: HA, BS, BH, DQ. Đến ngày mai 05/05/2013 sẽ tách thêm các mã số có đầu số VI. Lưu ý là các mã số ở cột O có đầu số trên chỉ được tách khi thỏa mãn đồng thời cả 2 điều kiện là không xuất hiện trong cột A và có ngày trên cột Q<= ngày hôm nay.
Em đội ơn bác nhiều!

Đừng nói vậy, hổng dám đâu........
Hổng hiểu chuyện này là chuyện gì, sao kỳ quá hổng hiểu.
 

File đính kèm

Đừng nói vậy, hổng dám đâu........
Hổng hiểu chuyện này là chuyện gì, sao kỳ quá hổng hiểu.
Cảm ơn bác nhiều nha, bác đúng là bậc thầy về VBA.
Bác mà ở HN em mời bác đi uống bia và tôn bác là thầy luôn. Em cũng muốn học VBA mà chưa có người chỉ bảo, đọc bản Draft của trường Giao thông mà như nhìn bức vách không hiểu gì cả
 

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

Back
Top Bottom