Em xin code VBA lấy dữ liệu ngày bắt đầu và ngày kết thúc

Liên hệ QC

hoalv1985

Thành viên hoạt động
Tham gia
27/11/17
Bài viết
130
Được thích
20
Giới tính
Nam
Em muốn lấy ngày bắt đầu và ngày kết thúc từ bảng chi tiết. Em nhờ các anh viết code giúp em với ạ! Em cảm ơn
 

File đính kèm

Kết quả mong muốn của bạn trong 2 cột đó sẽ là số liệu nào???

Mục TiêuTiến ĐộBắt ĐầuKết ThúcGhi Chú
Ổn định nhân sự
100%​
|||||||||||||||6/12/20207/11/2020
Truyền thông nội bộ/ Xây dựng văn hóa doanh nghiệp
0%​
6/15/20207/10/2020
Phát triển nguồn nhân lực
0%​
7/13/20207/30/2020
Quản trị hệ thống hành chính nhân sự
0%​
6/15/20207/30/2020
 
Lần chỉnh sửa cuối:
Kết quả mong muốn của bạn trong 2 cột đó sẽ là số liệu nào?
Em muốn lấy ngày bắt đầu, và ngày kết thúc từ sheet chi tiết vào sheet tổng quan theo điều kiện mục tiêu ( cột B sheet tổng quan) ạ.
Bài đã được tự động gộp:

Kết quả mong muốn của bạn trong 2 cột đó sẽ là số liệu nào?
Chỉ lấy ngày bắt đầu ( ngày đầu tiên làm), ngày kết thúc ( ngày cuối cùng làm) ạ.
 
Em muốn lấy ngày bắt đầu, và ngày kết thúc từ sheet chi tiết vào sheet tổng quan theo điều kiện mục tiêu ( cột B sheet tổng quan) ạ.
Bài đã được tự động gộp:


Chỉ lấy ngày bắt đầu ( ngày đầu tiên làm), ngày kết thúc ( ngày cuối cùng làm) ạ.

Nhiệm vụ chi tiếtBắt đầuKết thúcĐã thực hiệnGhi chú
Truyền thông nội bộ/ Xây dựng văn hóa doanh nghiệpGửi mail chúc mừng sinh nhật từng nhân sự hằng tháng , Thư chúc mừng các sự kiện cá nhân,…15-06-2020
Truyền thông nội bộ/ Xây dựng văn hóa doanh nghiệpTriển khai 5S tại trụ sở GW20-06-202018/6 hoàn thành Kế hoạch và
quy trình, trình Ban Tổng
Truyền thông nội bộ/ Xây dựng văn hóa doanh nghiệpPhát hành đồng phục và thẻ nhân viên GW01-07-2020Thiết kế, đặt may, cấp phát
Truyền thông nội bộ/ Xây dựng văn hóa doanh nghiệpHoàn thiện và triển khai văn hóa giao tiếp ứng xử GW01-07-202007-05-2020
Truyền thông nội bộ/ Xây dựng văn hóa doanh nghiệpXây dựng "Chiến binh" - tấm gương điển hình GW05-07-202010-07-2020Hoàn thiện tiêu chí cho danh hiệu
"Chiến binh GW 2020"
Truyền thông nội bộ/ Xây dựng văn hóa doanh nghiệpTổ chức các hoạt động gắn kết khác như: Các hoạt động 8/3,20/10, ngày Men's day, giáng sinh, Hành trình ngày và đêm,…01-08-2020HCNS Lên KH, điều phối tổ chức

Bạn cho mình hỏi chút trong trường hơp này bạn lấy ngày nào là ngày kết thúc vậy?
 
Nhiệm vụ chi tiếtBắt đầuKết thúcĐã thực hiệnGhi chú
Truyền thông nội bộ/ Xây dựng văn hóa doanh nghiệpGửi mail chúc mừng sinh nhật từng nhân sự hằng tháng , Thư chúc mừng các sự kiện cá nhân,…15-06-2020
Truyền thông nội bộ/ Xây dựng văn hóa doanh nghiệpTriển khai 5S tại trụ sở GW20-06-202018/6 hoàn thành Kế hoạch và
quy trình, trình Ban Tổng
Truyền thông nội bộ/ Xây dựng văn hóa doanh nghiệpPhát hành đồng phục và thẻ nhân viên GW01-07-2020Thiết kế, đặt may, cấp phát
Truyền thông nội bộ/ Xây dựng văn hóa doanh nghiệpHoàn thiện và triển khai văn hóa giao tiếp ứng xử GW01-07-202007-05-2020
Truyền thông nội bộ/ Xây dựng văn hóa doanh nghiệpXây dựng "Chiến binh" - tấm gương điển hình GW05-07-202010-07-2020Hoàn thiện tiêu chí cho danh hiệu
"Chiến binh GW 2020"
Truyền thông nội bộ/ Xây dựng văn hóa doanh nghiệpTổ chức các hoạt động gắn kết khác như: Các hoạt động 8/3,20/10, ngày Men's day, giáng sinh, Hành trình ngày và đêm,…01-08-2020HCNS Lên KH, điều phối tổ chức

Bạn cho mình hỏi chút trong trường hơp này bạn lấy ngày nào là ngày kết thúc vậy?
Em muốn lấy ngày lớn nhất trong cột ngày kết thúc anh ạ.
Bài đã được tự động gộp:

Kết quả mong muốn của bạn trong 2 cột đó sẽ là số liệu nào???

Mục TiêuTiến ĐộBắt ĐầuKết ThúcGhi Chú
Ổn định nhân sự
100%​
|||||||||||||||6/12/20207/11/2020
Truyền thông nội bộ/ Xây dựng văn hóa doanh nghiệp
0%​
6/15/20207/10/2020
Phát triển nguồn nhân lực
0%​
7/13/20207/30/2020
Quản trị hệ thống hành chính nhân sự
0%​
6/15/20207/30/2020
Đúng rồi anh ạ, chuẩn kết quả anh ạ
 
Mà sao số liệu của bạn trời ơi vậy cà:
Kết thúc
6/30/2020
6/20/2020
30/06/2020
 
Em muốn lấy ngày lớn nhất trong cột ngày kết thúc anh ạ.
Bài đã được tự động gộp:


Đúng rồi anh ạ, chuẩn kết quả anh ạ
Mà sao số liệu của bạn trời ơi vậy cà:
Kết thúc
6/30/2020
6/20/2020
30/06/2020
Vì phân công công việc, thì có những việc sẽ kéo dài ngày, trong khi đó đến ngày gần sẽ thêm việc anh ạ. 1 người có nhiều việc và date line cũng sẽ khác mà anh.
 
Ý mình ;là bạn nhập DD/MM/yyyy hay MM/dd/yyyy chỉ 1 loại mà thôi; Làm gì trong 1 cột mà nhập lẫn lộn 2 thứ làm vậy?

BS: À mà sẵn nói luôn: Muốn xài VBA thì tên trang tính chớ nên có dấu tiếng Việt.
 
Ý mình ;là bạn nhập DD/MM/yyyy hay MM/dd/yyyy chỉ 1 loại mà thôi; Làm gì trong 1 cột mà nhập lẫn lộn 2 thứ làm vậy?
Vâng, chắc tại khi em chuyển từ máy tính công ty về máy tính em thì định dạng ngày bị lỗi a ạ. Em cũng chưa để ý đến cái đó anh ah. Em cảm ơn anh
 
Macro bạn cần đây:
PHP:
Sub NgayCongViec()
Dim Rng As Range, sRng As Range, Cls As Range, Arr()
Dim MyAdd As String
Dim Rws As Long, fDat As Date, lDat As Date, J As Long
1 With Sheet2
    Rws = .[B3].CurrentRegion.Rows.Count
 3   Set Rng = .[B3].Resize(Rws)
    Arr() = .[B4].Resize(Rws, 4).Value
5 End With
Sheet1.Select
7 For Each Cls In Range([B3], [B3].End(xlDown))
    fDat = DateSerial(2050, 7, 2):      lDat = DateSerial(1990, 7, 2)
  9  For J = 1 To UBound(Arr())
        If Cls.Value = Arr(J, 1) Then
  11          If Arr(J, 3) <> 0 And Arr(J, 3) < fDat Then fDat = Arr(J, 3)
            If Arr(J, 4) <> 0 And Arr(J, 4) > lDat Then lDat = Arr(J, 4)
   13     End If
    Next J
  15  Cls.Offset(, 3).Value = fDat:       Cls.Offset(, 4).Value = lDat
Next Cls
End Sub
& kết quả là vầy:
Mục TiêuTiến ĐộBắt ĐầuKết ThúcGhi Chú
Ổn định nhân sự
100%​
TRUE​
6/12/20207/11/2020
Truyền thông nội bộ/ Xây dựng văn hóa doanh nghiệp
0%​
6/15/20207/10/2020
Phát triển nguồn nhân lực
0%​
7/13/20207/30/2020
Quản trị hệ thống hành chính nhân sự
0%​
6/15/20207/30/2020
 
Lần chỉnh sửa cuối:
Macro bạn cần đây:
PHP:
Sub NgayCongViec()
Dim Rng As Range, sRng As Range, Cls As Range, Arr()
Dim MyAdd As String
Dim Rws As Long, fDat As Date, lDat As Date, J As Long
With Sheet2
    Rws = .[B3].CurrentRegion.Rows.Count
    Set Rng = .[B3].Resize(Rws)
    Arr() = .[B4].Resize(Rws, 4).Value
End With
Sheet1.Select
For Each Cls In Range([B3], [B3].End(xlDown))
    fDat = DateSerial(2050, 7, 2):      lDat = DateSerial(1990, 7, 2)
    For J = 1 To UBound(Arr())
        If Cls.Value = Arr(J, 1) Then
            If Arr(J, 3) <> 0 And Arr(J, 3) < fDat Then fDat = Arr(J, 3)
            If Arr(J, 4) <> 0 And Arr(J, 4) > lDat Then lDat = Arr(J, 4)
        End If
    Next J
    Cls.Offset(, 3).Value = fDat:       Cls.Offset(, 4).Value = lDat
Next Cls
End Sub
& kết quả là vầy:
Mục TiêuTiến ĐộBắt ĐầuKết ThúcGhi Chú
Ổn định nhân sự
100%​
TRUE​
6/12/20207/11/2020
Truyền thông nội bộ/ Xây dựng văn hóa doanh nghiệp
0%​
6/15/20207/10/2020
Phát triển nguồn nhân lực
0%​
7/13/20207/30/2020
Quản trị hệ thống hành chính nhân sự
0%​
6/15/20207/30/2020
Khâm phục anh quá. cảm ơn anh. Em không hiểu câu lệnh của anh lắm, vì em cũng chập chững học VBA. Anh có thể giải thích giúp em với các dòng code của anh cho em với được không anh. Em cảm ơn anh nhiều.
 
3 dòng lệnh trước D1: Khai báo các tham biến cần dùng;
D1: Tuyên bố làm việc với trang tính Sheet2 (đó là trang 'chi tiết')
D2: Lấy số dòng của vùng (đã) sử dụng gán vô tham biến
D3: (Dòng lệnh dư do lịch sử để lại, bỏ qua)
D4: Lấy vùng từ ô trái trên nhất là [B4] mở rọng với số dòng bằng trị trong tham biến & số cột là 4 gán vô tham biến mảng
D5: Kết thúc tuyên bố
D6: Kích hoạt Sheet1
D7: Thiết lập vòng lặp duyệt các ô chứa dữ liệu của cột B (của trang hiện hành)
Vòng lặp này kết thúc tại D16
D8: Mệnh đề bên trái: Ấn định 1 số lớn không tưởng cho tham biến chứa dữ liệu kiểu ngày (fDat)
Mệnh đề bên phải tương ứng với tham biến lDat
D9: Tạo vòng lặp duyện các dòng trong mảng dữ liệu
Vòng lặp này kết thúc ở D14
D10: Điếu kện Nếu trị trong ô đang duyệt của vòng lặp ngoài bằng với trị đầu dòng đang duyệt trong mảng thì thực hiện các lệnh trước D13
D11: Điều kiện Nếu trị thứ 3 của dòng trong mảng đang duyệt khác 0 & nhỏ hơn trị trong tham biến fDat thì fDat lấy mới trị này
D12: Tương tự D11 với tham biến lDat
D15: Gán thời gian tìm được (trong quá trình duyệt mảng) vô 2 cột tương ứng

Chúc ngủ ngon!
 
Lần chỉnh sửa cuối:
3 dòng lệnh trước D1: Khai báo các tham biến cần dùng;
D1: Tuyên bố làm việc với trang tính Sheet2 (đó là trang 'chi tiết')
D2: Lấy số dòng của vùng (đã) sử dụng gán vô tham biến
D3: (Dòng lệnh dư do lịch sử để lại, bỏ qua)
D4: Lấy vùng từ ô trái trên nhất là [B4] mở rọng với số dòng bằng trị trong tham biến & số cột là 4 gán vô tham biến mảng
D5: Kết thúc tuyên bố
D6: Kích hoạt Sheet1
D7: Thiết lập vòng lặp duyệt các ô chứa dữ liệu của cột B (của trang hiện hành)
Vòng lặp này kết thúc tại D16
D8: Mệnh đề bên trái: Ấn định 1 số lớn không tưởng cho tham biến chứa dữ liệu kiểu ngày (fDat)
Mệnh đề bên phải tương ứng với tham biến lDat
D9: . . . .
Em cảm ơn anh nhiều ạ. Anh thông cảm cho em vì em mới tập vba nên cũng đang mầy mò anh à. lần nữa cảm ơn anh nhiều ạ
 
Web KT

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

Back
Top Bottom