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

Bùi Thúy Thúy

Thành viên thường trực
Tham gia ngày
2 Tháng bảy 2018
Bài viết
285
Được thích
35
Điểm
185
Tuổi
32
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

Lần chỉnh sửa cuối:

Hai Lúa Miền Tây

❆❆❆❆❆❆❆❆
Thành viên BQT
Administrator
Tham gia ngày
18 Tháng ba 2008
Bài viết
7,351
Được thích
14,229
Điểm
1,910
Nơi ở
Đồng ruộng Long An
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.
 

Bùi Thúy Thúy

Thành viên thường trực
Tham gia ngày
2 Tháng bảy 2018
Bài viết
285
Được thích
35
Điểm
185
Tuổi
32
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!
 

Hai Lúa Miền Tây

❆❆❆❆❆❆❆❆
Thành viên BQT
Administrator
Tham gia ngày
18 Tháng ba 2008
Bài viết
7,351
Được thích
14,229
Điểm
1,910
Nơi ở
Đồng ruộng Long An
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?
 

AnhThu-1976

Thành viên tiêu biểu
Tham gia ngày
17 Tháng mười 2014
Bài viết
725
Được thích
113
Điểm
420

File đính kèm

Hai Lúa Miền Tây

❆❆❆❆❆❆❆❆
Thành viên BQT
Administrator
Tham gia ngày
18 Tháng ba 2008
Bài viết
7,351
Được thích
14,229
Điểm
1,910
Nơi ở
Đồng ruộng Long An
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
 

Bùi Thúy Thúy

Thành viên thường trực
Tham gia ngày
2 Tháng bảy 2018
Bài viết
285
Được thích
35
Điểm
185
Tuổi
32
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.
 

Bùi Thúy Thúy

Thành viên thường trực
Tham gia ngày
2 Tháng bảy 2018
Bài viết
285
Được thích
35
Điểm
185
Tuổi
32
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
 

Hai Lúa Miền Tây

❆❆❆❆❆❆❆❆
Thành viên BQT
Administrator
Tham gia ngày
18 Tháng ba 2008
Bài viết
7,351
Được thích
14,229
Điểm
1,910
Nơi ở
Đồng ruộng Long An
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é.
 

Bùi Thúy Thúy

Thành viên thường trực
Tham gia ngày
2 Tháng bảy 2018
Bài viết
285
Được thích
35
Điểm
185
Tuổi
32
Đú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!
 

Hai Lúa Miền Tây

❆❆❆❆❆❆❆❆
Thành viên BQT
Administrator
Tham gia ngày
18 Tháng ba 2008
Bài viết
7,351
Được thích
14,229
Điểm
1,910
Nơi ở
Đồng ruộng Long An
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
 

Bùi Thúy Thúy

Thành viên thường trực
Tham gia ngày
2 Tháng bảy 2018
Bài viết
285
Được thích
35
Điểm
185
Tuổi
32
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ị)!
 
Top Bottom