Chép dữ liệu từ các sheet qua 1 sheet có chọn lọc

Liên hệ QC

lanhngocd

Thành viên mới
Tham gia
12/5/11
Bài viết
10
Được thích
1
Nghề nghiệp
Sale
Chào tất cả ace trên diễn đàn.
Mình có một vấn đề cần sự trợ giúp của ace, qua thời gian tự mày mò và thử qua nhiều cách song vẫn ko hiệu quả, này mình post lên để ace phụ mình giải quyết vấn đề này. Nội dung của "vấn đề" như sau:
Mình đang phải quản lý 5 chuyên đề đào tạo cho doanh nghiệp, chi tiết: Email Marketing (1), SEO(2),Online Branding (3), SEM (4), Conversion Technology (5) mỗi chuyên đề là 1 sheet và có một sheet tổng hợp lại, ví dụ như: Anh Nguyễn Văn A dự buổi đào tạo (1),(2),(3),(4) nhưng ko đi buổi số (5) - Các sheet tương ứng sẽ được nhập dữ liệu vào--> File tổng hợp sẽ tự động nhập vào các field tương ứng là:Email Marketing- "Có", SEO-"Có",Online Branding -"Có", SEM -"Có", Conversion Technology -"Không". Các dữ liệu khác còn lại như: Họ tên, cty, sđt, địa chỉ website, nguồn KH, email cũng sẽ tự động cập nhật qua sheet tổng hợp. Mình không cần kiểm tra sự trùng hợp tên khi sao chép qua Sheet tổng hợp

Để dễ hiểu hơn mình up file lên cho ace tham khảo.

Rất mong nhận được sự giúp đỡ.
Sẽ liên hệ để cảm ơn và hậu tạ ân nhân.

Chúc ace có thêm những kiến thức mới khi tham gia vào diễn đàn này.
 

File đính kèm

Lên cho ace giúp đỡ mình
 
Upvote 0
Chào tất cả ace trên diễn đàn.
Mình có một vấn đề cần sự trợ giúp của ace, qua thời gian tự mày mò và thử qua nhiều cách song vẫn ko hiệu quả, này mình post lên để ace phụ mình giải quyết vấn đề này. Nội dung của "vấn đề" như sau:
Mình đang phải quản lý 5 chuyên đề đào tạo cho doanh nghiệp, chi tiết: Email Marketing (1), SEO(2),Online Branding (3), SEM (4), Conversion Technology (5) mỗi chuyên đề là 1 sheet và có một sheet tổng hợp lại, ví dụ như: Anh Nguyễn Văn A dự buổi đào tạo (1),(2),(3),(4) nhưng ko đi buổi số (5) - Các sheet tương ứng sẽ được nhập dữ liệu vào--> File tổng hợp sẽ tự động nhập vào các field tương ứng là:Email Marketing- "Có", SEO-"Có",Online Branding -"Có", SEM -"Có", Conversion Technology -"Không". Các dữ liệu khác còn lại như: Họ tên, cty, sđt, địa chỉ website, nguồn KH, email cũng sẽ tự động cập nhật qua sheet tổng hợp. Mình không cần kiểm tra sự trùng hợp tên khi sao chép qua Sheet tổng hợp

Để dễ hiểu hơn mình up file lên cho ace tham khảo.

Rất mong nhận được sự giúp đỡ.
Sẽ liên hệ để cảm ơn và hậu tạ ân nhân.

Chúc ace có thêm những kiến thức mới khi tham gia vào diễn đàn này.
Tại F2 bạn sử dụng công thức
PHP:
=VLOOKUP($B2;INDIRECT("'"&F$1&"'!$B$2:$I$5");8;0)
Công thức này áp dụng từ F2:J5
 
Upvote 0
thêm file

Chào tất cả ace trên diễn đàn.
Mình có một vấn đề cần sự trợ giúp của ace, qua thời gian tự mày mò và thử qua nhiều cách song vẫn ko hiệu quả, này mình post lên để ace phụ mình giải quyết vấn đề này. Nội dung của "vấn đề" như sau:
Mình đang phải quản lý 5 chuyên đề đào tạo cho doanh nghiệp, chi tiết: Email Marketing (1), SEO(2),Online Branding (3), SEM (4), Conversion Technology (5) mỗi chuyên đề là 1 sheet và có một sheet tổng hợp lại, ví dụ như: Anh Nguyễn Văn A dự buổi đào tạo (1),(2),(3),(4) nhưng ko đi buổi số (5) - Các sheet tương ứng sẽ được nhập dữ liệu vào--> File tổng hợp sẽ tự động nhập vào các field tương ứng là:Email Marketing- "Có", SEO-"Có",Online Branding -"Có", SEM -"Có", Conversion Technology -"Không". Các dữ liệu khác còn lại như: Họ tên, cty, sđt, địa chỉ website, nguồn KH, email cũng sẽ tự động cập nhật qua sheet tổng hợp. Mình không cần kiểm tra sự trùng hợp tên khi sao chép qua Sheet tổng hợp

Để dễ hiểu hơn mình up file lên cho ace tham khảo.

Rất mong nhận được sự giúp đỡ.
Sẽ liên hệ để cảm ơn và hậu tạ ân nhân.

Chúc ace có thêm những kiến thức mới khi tham gia vào diễn đàn này.
Bạn dùng thử cái dictionary này xem
PHP:
Sub tonghop()
  Dim Dic, WS As Worksheet, iRow As Long, i As Long, j As Long
  Dim Arr(), TmpArr
  On Error Resume Next
  Application.ScreenUpdating = 0
  Sheets("tonghop").Range("A2:i5000").ClearContents
  With CreateObject("Scripting.Dictionary")
    For Each WS In Worksheets
      If WS.Name <> "tonghop" Then
        TmpArr = WS.Range(WS.[b2], WS.[B65536].End(xlUp)).Resize(, 9).Value
        For iRow = 1 To UBound(TmpArr, 1)
          If Not IsEmpty(TmpArr(iRow, 1)) Then
            If Not .Exists(TmpArr(iRow, 1)) Then
              i = i + 1
              .Add TmpArr(iRow, 1), i
              ReDim Preserve Arr(1 To 9, 1 To i)
              For j = 1 To 9
                Arr(j, i) = TmpArr(iRow, j)
              Next
            Else
             
            End If
          End If
        Next
      End If
    Next
  End With
  With Sheets("tonghop")
  .Range("B1").Resize(i, 9) = WorksheetFunction.Transpose(Arr)
  .Range("A1") = "STT"
  .Range("A2").Resize(i - 1).Value = Evaluate("ROW(R:R)")
  End With
Application.ScreenUpdating = 1
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Chào tất cả ace trên diễn đàn.
Mình có một vấn đề cần sự trợ giúp của ace, qua thời gian tự mày mò và thử qua nhiều cách song vẫn ko hiệu quả, này mình post lên để ace phụ mình giải quyết vấn đề này. Nội dung của "vấn đề" như sau:
Mình đang phải quản lý 5 chuyên đề đào tạo cho doanh nghiệp, chi tiết: Email Marketing (1), SEO(2),Online Branding (3), SEM (4), Conversion Technology (5) mỗi chuyên đề là 1 sheet và có một sheet tổng hợp lại, ví dụ như: Anh Nguyễn Văn A dự buổi đào tạo (1),(2),(3),(4) nhưng ko đi buổi số (5) - Các sheet tương ứng sẽ được nhập dữ liệu vào--> File tổng hợp sẽ tự động nhập vào các field tương ứng là:Email Marketing- "Có", SEO-"Có",Online Branding -"Có", SEM -"Có", Conversion Technology -"Không". Các dữ liệu khác còn lại như: Họ tên, cty, sđt, địa chỉ website, nguồn KH, email cũng sẽ tự động cập nhật qua sheet tổng hợp. Mình không cần kiểm tra sự trùng hợp tên khi sao chép qua Sheet tổng hợp

Để dễ hiểu hơn mình up file lên cho ace tham khảo.

Rất mong nhận được sự giúp đỡ.
Sẽ liên hệ để cảm ơn và hậu tạ ân nhân.

Chúc ace có thêm những kiến thức mới khi tham gia vào diễn đàn này.
Thật ra đề bài này còn có chỗ chưa rõ: có phải danh sách trong các sheet hòan toàn giống nhau ( không cần phải giông thứ tự ) tức là dù có hay không tham dự khóa học đều có tên của các học viên đó.
Nếu đúng như thế bạn thử sử dụng code này xem
(Nếu không đúng như thế phải sửa lại code)
Mã:
Private Sub Worksheet_Activate()
    Dim Ws, Vung, Cll, DuLieu, Wsh, Tim, K, VungDo, I
    Set Ws = Sheets("SEO"): Set Tim = [c1:j1]
    Set DuLieu = Ws.Range(Ws.[b2], Ws.[b10000].End(xlUp))
    [a2:l1000].ClearContents
        With [b10000].End(xlUp)(2)
            .Resize(DuLieu.Rows.Count, 4).Value = DuLieu.Resize(, 4).Value
            .Offset(, 9).Resize(DuLieu.Rows.Count, 2).Value = DuLieu.Offset(, 5).Resize(, 2).Value
        End With
            Range([b2], [b1000].End(xlUp)).Offset(, -1) = [row(A:A)]
            Set VungDo = Range([b2], [b10000].End(xlUp))
                For Each Wsh In Worksheets
                    If Wsh.Name <> "TongHop" Then
                        K = Application.WorksheetFunction.Match(Wsh.Name, Tim, 0)
                        Set Vung = Sheets(Wsh.Name).Range(Sheets(Wsh.Name).[b2], Sheets(Wsh.Name).[b10000].End(xlUp))
                            For Each Cll In Vung
                                For I = 1 To VungDo.Rows.Count
                                    If VungDo(I) = Cll Then VungDo(I).Offset(, K).Value = Cll.Offset(, 7).Value: Exit For
                                Next I
                            Next Cll
                    End If
                Next Wsh
End Sub
Nhập dữ liệu các sheet khác sheet "TongHop" ==> chọn sheet "TongHop" xem kết quả
Thân
 

File đính kèm

Upvote 0
Web KT

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

Back
Top Bottom