Ngô thanh hằng
Ngô thanh hằng
Thảo luận 9 thảo luận
Vỗ tay 0 vỗ tay
Lượt xem 145 lượt xem

chút ạEm có 2 file bảng lương và bảng chấm ngFile 1 có các sheet chấm ng

Thầy cho e hỏi chút ạ:

Em có 2 file bảng lương và bảng chấm công

File 1 có các sheet chấm công và bảng lương từ tháng 1 đến tháng 12 của công trình A: CC1, BL1, CC2,BL2,.......CC2,BL3

File 1 có các sheet chấm công và bảng lương từ tháng 1 đến tháng 12 của công trình B: CC1, BL1, CC2,BL2,.......CC2,BL3

Bây giờ e muốn tổng hợp dữ liệu từ các sheet bảng lương BL từ cả 2 file ( tổng hợp cho 1 năm) thì e nên làm thế nào ạ, dùng câu lệnh như thế nào ạ. Nhờ thầy hướng dẫn giúp e.

Thảo luận 9 câu trả lời
Lượt xem 145 lượt xem
Vỗ tay vỗ tay
Ngô thanh hằng 15:10 - Oct 06, 2020

Em viết nhầm đoạn cuối tên các sheet trong file, các sheet cuối cùng trong các file là CC12, BL12

Vỗ tay vỗ tay
Ngô thanh hằng 10:10 - Oct 07, 2020

Bạn tìm hiểu cách làm trong chương 10 - sử dụng vòng lặp để tạo lệnh gom dữ liệu tự động nhé.

Trong đó có file mẫu về gom bảng lương từ nhiều tháng vào 1 bảng duy nhất.

Vỗ tay vỗ tay
Ngô thanh hằng 10:10 - Oct 07, 2020

Nhưng mà bảng lương của e có cả sheet chấm công và sheet tính lương từ tháng 1 đến tháng 12, trong khi đó e chỉ muốn lấy ra các sheet tính lương từ tháng 1 đến tháng 12 thì làm thế nào ạ?

Bài mẫu hướng dẫn chương 10 thì lấy toàn bộ cả file, và trong file đấy chỉ có 1 sheet nên chưa sát với ý e đang muốn tìm hiểu cách làm

Nhờ thầy hướng dẫn cụ thể hơn trong trường hợp này của e ạ.

Em cảm ơn thầy

Vỗ tay vỗ tay
Ngô thanh hằng 10:10 - Oct 07, 2020

Bạn có thể xét 1 vòng lặp với tên Sheet:

Dim i as long

For i = 1 to Worksheets.Count

IF Worksheets(i).Name = "BL*" Then

... 'lệnh lấy dữ liệu từ Sheet i sang sheet tổng hợp

End If

Nếu sheet nào có tên là "BL*" thì mới lấy dữ liệu (trong đó dấu * đại diện cho ký tự bất kỳ phía sau chữ BL) thay vì lấy ở tất cả các sheet.

Như vậy có thể bỏ qua các sheet CC để chỉ lấy ở các sheet BL

Vỗ tay vỗ tay
Ngô thanh hằng 23:10 - Oct 15, 2020

Thầy ơi, nhờ thầy hướng dẫn thêm, e chưa biết nên cài thêm 1 vòng lặp như trên vào đâu trong bài code này để chạy được theo ý muốn

Bài này là mở từng file một theo bài học ạ

Thầy hướng dẫn thêm giúp e ạ.

Sub Luu_DuLieu()

'Thu muc chon file

    With Application.FileDialog(msoFileDialogFilePicker)

        .AllowMultiSelect = True    'cho phep chon nhieu file

        .Show                             'Hien cua so chon file

    Dim i As Integer

        For i = 1 To .SelectedItems.Count

        'Xet file duoc chon

            Dim wb_KQ As Workbook   'Bien workbook ket qua (Bang luong tong hop)

            Dim wb_1 As Workbook     'Bien workbook duoc chon tu thu muc (Tung file bang luong chi tiet)

                Set wb_KQ = ThisWorkbook

                Set wb_1 = Workbooks.Open(.SelectedItems(i))

            'B1: xac dinh dong cuoi bang tong hop (Bang luong tong hop)

            Dim DongCuoi_KQ As Long

            DongCuoi_KQ = wb_KQ.Sheets("Data_TienLuong").Range("A" & Rows.Count).End(xlUp).Row

            'B2: xac dinh dong dau va dong cuoi bang chi tiet (Tung file bang luong chi tiet)

            Dim DongDau_CT As Long

                DongDau_CT = 8

            Dim DongCuoi_CT As Long

                DongCuoi_CT = wb_1.Sheets(1).Range("F" & Rows.Count).End(xlUp).Row

            'B3: xac dinh khoang cach

            Dim KhoangCach As Long

            KhoangCach = DongCuoi_CT - DongDau_CT + 1

            'B4: luu

            wb_KQ.Sheets("Data_TienLuong").Range("A" & DongCuoi_KQ + 1 & ":BM" & DongCuoi_KQ + KhoangCach).Value = _

                wb_1.Sheets(1).Range("A" & DongDau_CT & ":BM" & DongCuoi_CT).Value

            'B5: Dong file noi dung

            wb_1.Close SaveChanges:=False

        Next i

    End With

End Sub


Vỗ tay vỗ tay
Ngô thanh hằng 21:03 - Mar 02, 2021

Thầy ơi thầy cho e hỏi, e viết code theo hướng dẫn của thầy ở trên mà chưa đúng, nhờ thầy chỉ giúp e chỗ sai trong đoạn code này giúp e sửa lại ạ. E cảm ơn thầy.

Sub Luu_DuLieu()

'B1: xac dinh dong cuoi bang tong hop (Bang luong tong hop)

Dim DongCuoi_TH As Long

DongCuoi_TH = Sheets("TH").Range("A" & Rows.Count).End(xlUp).Row

'B2: xac dinh dong dau va dong cuoi bang chi tiet (Tung file bang luong chi tiet)

Dim DongDau_CT As Long

DongDau_CT = 8

Dim i As Long

For i = 1 To Worksheets.Count

Dim DongCuoi_CT As Long

DongCuoi_CT = Sheets(i).Range("A" & Rows.Count).End(xlUp).Row

'B3: xac dinh khoang cach

Dim KhoangCach As Long

KhoangCach = DongCuoi_CT - DongDau_CT + 1

'B4: luu

If Worksheets(i).Name = "BL*" Then

Sheets("TH").Range("A" & DongCuoi_TH + 1 & ":N" & DongCuoi_TH + KhoangCach).Value = _

Sheets(i).Range("A" & DongDau_CT & ":N" & DongCuoi_CT).Value

End If

Next i

End Sub

Vỗ tay vỗ tay
Ngô thanh hằng 10:03 - Mar 03, 2021

Bạn có thể vui lòng gửi kèm file được không? vì để kiểm tra những đoạn code dài thì cần chạy trên file excel mới rõ, còn chỉ đọc code sẽ khó phát hiện lỗi.

Cách đính kèm file: Bạn đưa file vào Google Drive của bạn, sau đó lấy link chia sẻ => Gửi link đó vào mục hỏi đáp.

Chú  ý khi tạo link chia sẻ bạn cần đặt chế độ public (công khai) cho đường link nhé.

Vỗ tay vỗ tay
Ngô thanh hằng 22:03 - Mar 03, 2021

https://docs.google.com/spreadsheets/...

Em muốn tổng hợp các sheet có tên BL vào 1 bảng tổng hợp TH ạ. Nhờ thầy giúp e ạ

Vỗ tay vỗ tay
Ngô thanh hằng 21:03 - Mar 10, 2021

thầy ơi e đã đính kèm file rồi ạ. Nhờ thầy chỉ lỗi giúp e để e sửa lại ạ. Em cảm ơn thầy

Vỗ tay vỗ tay
Câu hỏi liên quan
© 2020 - Bản quyền của Công Ty Cổ Phần Công Nghệ Giáo Dục Gitiho Việt Nam
Giấy chứng nhận Đăng ký doanh nghiệp số: 0109077145, cấp bởi Sở Kế hoạch và Đầu tư TP. Hà Nội
Giấy phép mạng xã hội số: 588, cấp bởi Bộ Thông tin và Truyền thông