Tạo pivottable cho dữ liệu được tổng hợp từ 2 sheet

Chia sẻ bởi:hands
★★★★★
Quảng cáo

Chào các bạn,

Cho mình hỏi với mình có 2 sheet
sheet 1
Cột A, B, C, D có 1000 dòng dữ liệu
sheet 2
Cột A, B, C, D có 10000 dòng dữ liệu
(lưu ý tên cột A, B, C, D ở 2 sheet giống nhau và dữ liệu ở 2 sheet được cập nhật liên tục)

Mình muốn gộp 2 sheet này lại để có dữ liệu sau khi gộp mục đích dùng pivottable tiếp
Nghĩa là sau khi gộp
Cột A, B, C, D có 1100 dòng dữ liệu

Từ đó pivottable sẽ truy xuất vào vùng dữ liệu có 1100 dòng này (đã thử dùng paste link nhưng hơi thủ công khi gộp dữ liệu và pivottable wizard chỉ ra các bảng sum, count –> không đúng ý mình).

Mong các bạn có giải pháp hữu hiệu hơn.

Thanks
Khoi

Tạo 2 name ở 2 sheet, làm tương tự như clip bên dưới:
T0WN0UtoBhM

Mình đang xem để chỉnh SQL vào file của mình, những đoạn youtbe hơi mờ nên gõ code vào vẫn sai.
Cấu trúc SQL đó như thế nào nhỉ bạn? Để mình thử lại tiếp.

Cám ơn bạn
Khoi

Với bài này bạn gõ đoạn Query như sau:

SELECT * FROM DATA1
UNION ALL
SELECT * FROM DATA2

Lưu ý là phải đặt tên name trước nhé.

Oi, được rồi bạn ạ, tớ cám ơn bạn nhiều nhé. Hóa ra excel cũng thực hiện được các cấu trúc query như access nhỉ.
Hay thật đấy.
Và đây là file kết quả theo hướng dẫn của bác Hai Lúa Miền Tây.

Thanks
Khoi

www.giaiphapexcel.com/diendan/threads/t%E1%BA%A1o-pivottable-cho-d%E1%BB%AF-li%E1%BB%87u-%C4%91%C6%B0%E1%BB%A3c-t%E1%BB%95ng-h%E1%BB%A3p-t%E1%BB%AB-2-sheet.89218/

Kỹ năng giải quyết vấn đề hiệu quả
Khóa học SprinGO phù hợp

Kỹ năng giải quyết vấn đề hiệu quả

Mô tả Nội dung Đánh giá Tài nguyên KỸ NĂNG GIẢI QUYẾT VẤN ĐỀ HIỆU QUẢHiểu đúng vấn đề là một nửa của giải...

Xem khóa học
★★★★★ 5 ★ 1 👤 2 ▥ 0
Quảng cáo

Bạn nên đọc

2 Responses

  1. hands says:

    Các bạn cho mình hỏi, mình có 2 bảng dữ liệu như file đính kèm.
    1. Khi mình pivot riêng lẻ thì lọc được điều kiện ngày thanh toán, sau đó là code thanh toán như 2 bảng pivot ở sheet1.
    2. Tuy nhiên khi consol lại như bảng bên dưới thì Điều kiện (row) lúc này chỉ được chọn 1 trong 2. Tức là chỉ xem được số tiền thanh toán theo ngày or số tiền trả theo code.
    Các bạn có thể hướng dẫn giúp mình làm sao có thể consol data mà vẫn lọc được 2 điều kiện như từng bảng rời ko ạ ?

    Many thanks

    cái này phải dùng cách khác mới được vui lòng xem file

    Bạn hướng dẫn cách làm được ko ạ?

    cách hưỡng dẫn đây
    [URL='https://www.giaiphapexcel.com/forum/showthread.php?89218-T%E1%BA%A1o-pivottable-cho-d%E1%BB%AF-li%E1%BB%87u-%C4%91%C6%B0%E1%BB%A3c-t%E1%BB%95ng-h%E1%BB%A3p-t%E1%BB%AB-2-sheet&p=556441#post556441']https://www.giaiphapexcel.com/forum/…-được-tổng-hợp-từ-2-sheet&p=556441#post556441

    Tạo 2 name ở 2 sheet, làm tương tự như clip bên dưới:T0WN0UtoBhM

    Rất hay anh Hai Lúa ạh.
    Nhưng dữ liệu lớn có vẻ căng (e chưa thử)
    12 Name tương đương 12 tháng, mỗi Name tren dưới 100k bản ghi liệu excel có chịu nổi không anh?

    Nếu dữ liệu 12 tháng như F1 nơi có thể chơi ăn gian kiểu khác–=0
    ví dụ như kết hợp cùng VBA chẳng hạn

    Ý anh Thương có phải rút ngắn tối đa các bản ghi bằng VBA -> sau đó mới SQL ?

    Đã VBA rồi thì không cần SQL xem đây.Chỉ cần vậy thôi(VBA+PIVOTtable)–=0
    Option Explicit

    Sub Getdata_fromsheets()
    Dim sh As Object, Data As Range, T As Double
    T = Timer
    Application.ScreenUpdating = False
    Sheets("Temp").Range("3:65000").ClearContents
    Sheets("PVT").Range("3:65000").ClearContents
    For Each sh In ThisWorkbook.Sheets
    If sh.name <> "PVT" Then
    sh.Range("A4").CurrentRegion.Offset(1).copy
    Sheets("Temp").Range("A65536").End(3).Offset(1).PasteSpecial (12)
    Application.CutCopyMode = False
    End If
    Next
    Call PIVOT_ADD
    Application.ScreenUpdating = True
    Sheets("PVT").Range("A1") = Timer – T
    End Sub

    Sub PIVOT_ADD()
    Dim PVT As PivotTable, PVT_Data As Range
    Set PVT_Data = Sheets("Temp").Range("A2").CurrentRegion
    ActiveWorkbook.PivotCaches.Create(xlDatabase, PVT_Data).CreatePivotTable (Sheets("PVT").Range("C12")), "Pivot"
    Set PVT = ActiveSheet.PivotTables("Pivot")
    With PVT
    With .PivotFields("S")
    .Orientation = xlRowField
    .Position = 1
    End With
    With .PivotFields("Paid Date")
    .Orientation = xlPageField
    .Position = 1
    End With
    .AddDataField PVT.PivotFields("OUT"), ".OUT", xlSum
    .PivotFields(".OUT").NumberFormat = "#,##0"
    .TableStyle2 = "OPTION1"
    .RowAxisLayout xlTabularRow
    End With
    ActiveWorkbook.RefreshAll
    End Sub

    Không ổn a Thương ơi.
    Như em nói mỗi Name có trên dưới 100k bản ghi, mà 12 name thì hơn cả triệu dòng
    theo em hiểu thủ tục get data của Anh là copy dữ liệu về 1 sheet.
    1 sheet cũng chỉ có hơn triệu dòng vậy giải pháp này chắc phá sản rồi.

    nếu dữ liệu nhiều hơn số dòng của 1 sheet thì lúc đó tôi sẽ cho code chạy từ sheet 1–10 để cho pvt rút gọn dữ liệu, sau đó lấy kết quả ở pvt gán ngược lại sheets nguồn của PVT,
    còn 2 sheet còn lại cứ gom nối vào là xong.
    với các này thjif đảm bảo bạn có 36 sheet cũng chẳng sao nhé–=0

  2. hands says:

    Em muốn làm trên 2 sheet thì thêm tên lệnh như thế nào ạ?
    2851

    Dùng VBA thử nha bạn
    Sub mongmuon()
    Dim J As Integer
    On Error Resume Next
    Sheets(1).Select
    Worksheets.Add
    Sheets(1).Name = "mongmuon"
    Sheets(2).Activate
    Range("A1").EntireRow.Select
    Selection.Copy Destination:=Sheets(1).Range("A1")
    For J = 2 To Sheets.Count
    Sheets(J).Activate
    Range("A1").Select
    Selection.CurrentRegion.Select
    Selection.Offset(1, 0).Resize(Selection.Rows.Count – 1).Select
    Selection.Copy Destination:=Sheets(1).Range("A65536").End(xlUp)(2)
    Next
    End Sub

    Dùng VBA thử nha bạn:

Leave a Reply

Your email address will not be published. Required fields are marked *

Quảng cáo

Cũ vẫn chất

Xem thêm