Lấy số liệu từ bảng dữ liệu trong một sheet ra các sheet khác

Liên hệ QC

Bùi Thúy Thúy

Thành viên thường trực
Tham gia
2/7/18
Bài viết
289
Được thích
38
Xin chào các anh, chị
Em có bài toán sau mong các anh, chị giúp đỡ:
1- Căn cứ vào "bộ phận" (cột Y) trong sheet (DM_HD) để lấy số liệu, nếu nội dung trong cột Y trong sheet (DM_HD) là "công nhân kỹ thuật" thì số liệu được lấy sang bảng của sheet (DS Cong Nhan) nếu nội dung trong cột Y trong sheet (DM_HD) là "kỹ thuật" thì số liệu được lấy sang bảng của sheet (DS Can Bo) .
2- Nội dung trong sheet sheet (DM_HD) và sheet (DS Cong Nhan) được lấy theo quy luật sau:
stt : sẽ đánh lại từ đầu và bắt đầu từ số 01
Tên :Lấy từ cột D
Bằng cấp: Lấy từ cột M
Nghề nghiệp: Lấy từ cột E
Chức vụ: Lấy từ cột N
Công việc cần làm: Cột O
Tổ đội: Cột AB
Nội dung gồm tầm 200 dòng.


a1.pnga2.pnga3.png
 

File đính kèm

  • Xin giup.xls
    220.5 KB · Đọc: 21
Lần chỉnh sửa cuối:
Xin chào các anh, chị
Em có bài toán sau mong các anh, chị giúp đỡ:
1- Căn cứ vào "bộ phận" (cột Y) trong sheet (DM_HD) để lấy số liệu, nếu nội dung trong cột Y trong sheet (DM_HD) là "công nhân kỹ thuật" thì số liệu được lấy sang bảng của sheet (DS Cong Nhan) nếu nội dung trong cột Y trong sheet (DM_HD) là "kỹ thuật" thì số liệu được lấy sang bảng của sheet (DS Can Bo) .
2- Nội dung trong sheet sheet (DM_HD) và sheet (DS Cong Nhan) được lấy theo quy luật sau:
stt : sẽ đánh lại từ đầu và bắt đầu từ số 01
Tên :Lấy từ cột D
Bằng cấp: Lấy từ cột M
Nghề nghiệp: Lấy từ cột E
Chức vụ: Lấy từ cột N
Công việc cần làm: Cột O
Tổ đội: Cột AB
Nội dung gồm tầm 200 dòng.



View attachment 227539View attachment 227540View attachment 227541
Nếu cột bộ phận chỉ có 2 bộ phận thì dùng Advanced Filter đi bạn.
 
Upvote 0
Nếu cột bộ phận chỉ có 2 bộ phận thì dùng Advanced Filter đi bạn.
Dạ! có hướng nào khác để lấy dữ liệu như em nói trên không ạ? nếu lọc thì em làm được.
Vì dữ liệu còn liên quan đến các nội dung khác và các liên kết khác.
Anh giúp em ạ!
Em cảm ơn anh!
 
Upvote 0
Dạ! có hướng nào khác để lấy dữ liệu như em nói trên không ạ? nếu lọc thì em làm được.
Vì dữ liệu còn liên quan đến các nội dung khác và các liên kết khác.
Anh giúp em ạ!
Em cảm ơn anh!
Bạn xác nhận lại là cột bộ phận chỉ có 2 bộ phận?
 
Upvote 0

File đính kèm

  • Xin giup.xls
    222.5 KB · Đọc: 20
Upvote 0
Dạ vâng ạ! có hai bộ phận ạ!
Nhưng vẫn lấy dữ liệu ra 2 sheet như em nêu trên.
Anh xem giúp em.
Bạn tham khảo code sau, còn cái STT bạn tự làm nhé.

Mã:
Sub LocDL_HLMT()
    With CreateObject("ADODB.Connection")
        .Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=No"""
        Trang_tính1.Range("B6").CopyFromRecordset .Execute("Select F4,F13,F5,F14,F15,F28 from [DM_HD$] where Left(trim(F25),1) ='C'")
        Trang_tính2.Range("B6").CopyFromRecordset .Execute("Select F4,F13,F5,F14,F15 from [DM_HD$] where Left(trim(F25),1) ='k'")
    End With
    
End Sub
 
Upvote 0
Bạn tham khảo code sau, còn cái STT bạn tự làm nhé.

Mã:
Sub LocDL_HLMT()
    With CreateObject("ADODB.Connection")
        .Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=No"""
        Trang_tính1.Range("B6").CopyFromRecordset .Execute("Select F4,F13,F5,F14,F15,F28 from [DM_HD$] where Left(trim(F25),1) ='C'")
        Trang_tính2.Range("B6").CopyFromRecordset .Execute("Select F4,F13,F5,F14,F15 from [DM_HD$] where Left(trim(F25),1) ='k'")
    End With
   
End Sub
Em cám ơn anh nhiều!
Bài đã được tự động gộp:

Bạn thử file này và nhớ kiểm tra kỹ trước khi dùng (bấm vào nút ovan và hình chữ nhật)
Cam ơn anh/chị đã giúp em.
 
Upvote 0
Bạn tham khảo code sau, còn cái STT bạn tự làm nhé.

Mã:
Sub LocDL_HLMT()
    With CreateObject("ADODB.Connection")
        .Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=No"""
        Trang_tính1.Range("B6").CopyFromRecordset .Execute("Select F4,F13,F5,F14,F15,F28 from [DM_HD$] where Left(trim(F25),1) ='C'")
        Trang_tính2.Range("B6").CopyFromRecordset .Execute("Select F4,F13,F5,F14,F15 from [DM_HD$] where Left(trim(F25),1) ='k'")
    End With
  
End Sub
Anh cho em hỏi thêm chút, nếu muốn thay đối tên bộ phận trong cột Y thì thay đổi chữ cái đầu là ='C'"; ='k'"
Ví dụ em muốn 2 bộ phận khác thay thế là Giám đốc và Nhân viên thì code sẽ là
Mã:
Sub LocDL_HLMT()
    With CreateObject("ADODB.Connection")
        .Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=No"""
        Trang_tính1.Range("B6").CopyFromRecordset .Execute("Select F4,F13,F5,F14,F15,F28 from [DM_HD$] where Left(trim(F25),1) ='G'")
        Trang_tính2.Range("B6").CopyFromRecordset .Execute("Select F4,F13,F5,F14,F15 from [DM_HD$] where Left(trim(F25),1) ='N'")
    End With
  
End Sub
 
Upvote 0
Anh cho em hỏi thêm chút, nếu muốn thay đối tên bộ phận trong cột Y thì thay đổi chữ cái đầu là ='C'"; ='k'"
Ví dụ em muốn 2 bộ phận khác thay thế là Giám đốc và Nhân viên thì code sẽ là
Mã:
Sub LocDL_HLMT()
    With CreateObject("ADODB.Connection")
        .Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=No"""
        Trang_tính1.Range("B6").CopyFromRecordset .Execute("Select F4,F13,F5,F14,F15,F28 from [DM_HD$] where Left(trim(F25),1) ='G'")
        Trang_tính2.Range("B6").CopyFromRecordset .Execute("Select F4,F13,F5,F14,F15 from [DM_HD$] where Left(trim(F25),1) ='N'")
    End With
 
End Sub
Đúng rồi bạn, bạn test thử nhé.
 
Upvote 0
@Bùi Thúy Thúy : Ngồi hóng code của các thành viên giúp đỡ bạn để biết thêm cách giải quyết vấn đề.
Nếu cần 1 lúc lọc từ dữ liệu của bạn ra 4 sheet hay > 4 sheet thì code sẽ phức tạp hơn.
 
Upvote 0
Đúng rồi bạn, bạn test thử nhé.
Em chào anh/chị!
Em làm phiền anh/chị chút xíu ạ!
Code anh/chị giúp em ở #7 đã chạy rất tốt.
Do áp dụng vào công việc thực tế em xin được nhờ anh (chị) giúp em một lần nữa để :
Chỉ những ô được điền số thứ tự ở cột A trong shheet(DM_HD) thì dòng dữ liệu tương ứng mới được lấy sang Sheet (DS Cong Nhan) và Sheet(DS Can Bo), những ô không được điền số thứ tự cột A trong shheet(DM_HD) thì không được lấy sang.
Mong anh/chị bớt chút thời gian giúp em ạ!
Em xin chân thành cảm ơn!
 
Upvote 0
Em chào anh/chị!
Em làm phiền anh/chị chút xíu ạ!
Code anh/chị giúp em ở #7 đã chạy rất tốt.
Do áp dụng vào công việc thực tế em xin được nhờ anh (chị) giúp em một lần nữa để :
Chỉ những ô được điền số thứ tự ở cột A trong shheet(DM_HD) thì dòng dữ liệu tương ứng mới được lấy sang Sheet (DS Cong Nhan) và Sheet(DS Can Bo), những ô không được điền số thứ tự cột A trong shheet(DM_HD) thì không được lấy sang.
Mong anh/chị bớt chút thời gian giúp em ạ!
Em xin chân thành cảm ơn!
Bạn thêm điều kiện lọc vào là ok nhé:

Mã:
Sub LocDL_HLMT()
    With CreateObject("ADODB.Connection")
        .Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=No"""
        Trang_tính1.Range("B6").CopyFromRecordset .Execute("Select F4,F13,F5,F14,F15,F28 from [DM_HD$] where Left(trim(F25),1) ='C' and F1 is not null")
        Trang_tính2.Range("B6").CopyFromRecordset .Execute("Select F4,F13,F5,F14,F15 from [DM_HD$] where Left(trim(F25),1) ='k' and F1 is not null")
    End With
    
End Sub
 
Upvote 0
Bạn thêm điều kiện lọc vào là ok nhé:

Mã:
Sub LocDL_HLMT()
    With CreateObject("ADODB.Connection")
        .Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=No"""
        Trang_tính1.Range("B6").CopyFromRecordset .Execute("Select F4,F13,F5,F14,F15,F28 from [DM_HD$] where Left(trim(F25),1) ='C' and F1 is not null")
        Trang_tính2.Range("B6").CopyFromRecordset .Execute("Select F4,F13,F5,F14,F15 from [DM_HD$] where Left(trim(F25),1) ='k' and F1 is not null")
    End With
   
End Sub
Vâng, em xin chân thành cảm ơn anh(chị)!
 
Upvote 0
Web KT
Back
Top Bottom