Tổng hợp nhiều file thành 1 file bằng power query

Liên hệ QC

maily mai

Thành viên mới
Tham gia
10/4/21
Bài viết
28
Được thích
1
Mọi người giúp em với ạ, em đang cần tổng hợp nhiều file excel(ví dụ là 3 file: B02_A_202107,B03_B_202107,B05_C_202107) thành 1 file ( các tiêu đề như file mẫu TỎNG HỢP 202107) bằng power query ạ. Trong file có nhiều sheet nhưng chỉ lấy sheet có kí tự đầu là "Nhom-...".mong mọi người chỉ bảo ạ. e muốn Tổng hợp mẫu như file "TỔNG HỢP 202107" ạ, Mọi người chỉ giúp e với, e đang loay hoay mà nó ko ra như file mẫu được. Em xin cảm ơn ạ!
 

File đính kèm

  • B02_A_202107.xlsx
    477.6 KB · Đọc: 22
  • B03_B_202107.xlsx
    131 KB · Đọc: 20
  • B05_C_202107.xlsx
    137 KB · Đọc: 23
  • TỔNG HỢP 202107.xlsx
    1.2 MB · Đọc: 27
Đã làm thế nào để "đến đây"? Có làm đúng từng bước chưa?
b1: Em định dạng bảng cho 3 file của các sheet nhóm và đặt tên cho từng bảng, Table1,Table2, Table3.
b2: Em vào data-get-from sheet, Hình ảnh query editor hiện lên, Em chọn Append as new thì thấy tên là queries(3).
 
b1: Em định dạng bảng cho 3 file của các sheet nhóm và đặt tên cho từng bảng, Table1,Table2, Table3.
b2: Em vào data-get-from sheet, Hình ảnh query editor hiện lên, Em chọn Append as new thì thấy tên là queries(3).
Sai rồi. Từ 1 file mới, Get Data from folder, chọn folder, chọn sample, nhấn combine and transform. Nếu là table thì tất cả tables phải có tên giống nhau
Đây là tổng hợp từ nhiều file chứ có phải từ 1 file nhiều worksheet đâu mà append. Lấy từ 1 file nhiều sheet rồi append là chủ đề Gộp sheet
 
Lần chỉnh sửa cuối:
Các sheet cần combine phải có tên giống nhau. Đổi xong thì làm được như file đính kèm.
Nếu muốn không đổi tên sheet giống nhau có thể dùng đoạn sau đây

Mã:
let
    Source = Folder.Files("D:\Data"),  // Đổi tên đường dẫn phù hợp
    #"Added Custom" = Table.AddColumn(Source, "Custom", each Excel.Workbook([Content])),
    #"Expanded Custom" = Table.ExpandTableColumn(#"Added Custom", "Custom", {"Name", "Data", "Item", "Kind", "Hidden"}, {"Name.1", "Data", "Item", "Kind", "Hidden"}),
    #"Filtered Rows" = Table.SelectRows(#"Expanded Custom", each ([Name.1] = "Nhom - Hà" or [Name.1] = "Nhom - Nga" or [Name.1] = "Nhom - Thuy")),
    #"Expanded Data" = Table.ExpandTableColumn(#"Filtered Rows", "Data", {"Column1", "Column2", "Column3", "Column4", "Column5", "Column6", "Column7", "Column8", "Column9", "Column10", "Column11", "Column12", "Column13", "Column14", "Column15", "Column16", "Column17", "Column18", "Column19", "Column20", "Column21", "Column22", "Column23", "Column24"}),
    #"Removed Columns" = Table.RemoveColumns(#"Expanded Data",{"Content", "Name", "Extension", "Date accessed", "Date modified", "Date created", "Attributes", "Folder Path","Item","Kind","Hidden"}),
    #"Promoted Headers" = Table.PromoteHeaders(#"Removed Columns", [PromoteAllScalars=true]),
    #"Filtered Rows1" = Table.SelectRows(#"Promoted Headers", each ([SEQ] <> null and [SEQ] <> "SEQ" and [SEQ] <> "STT")),
    #"Removed Other Columns" = Table.SelectColumns(#"Filtered Rows1",{"Nhom - Hà", "SEQ", "Year", "Month", "Day", "Full Name", "Employee ID", "Working Time", "Workshift", "PO No.", "Iterm No.", "PO Qty", "Production Process", "Qty/ 1 product", "Good Qty", "NG Qty", "Product Qty", "Price", "Amount", "Allowance", "By pcs/ By time", "Notes", "Accumulated Qty", "% Finished ", "Column25"}),
    #"Renamed Columns" = Table.RenameColumns(#"Removed Other Columns",{{"Nhom - Hà", "Group"}, {"Column25", "ID"}})
in
    #"Renamed Columns"
 
Nếu không sửa tên sheet, căn cứ tên sheet luôn bắt đầu bởi "Nhom", dùng code Power query sau, chỉ cần sửa đường dẫn ở dòng đầu tiên. Không cần biết có bao nhiêu file, bao nhiêu nhóm, tên nhóm, ...

JavaScript:
let    
    FolderName ="D:\MyPham\MY BOOK\MCode-PowerQuery\B00",
    FileNameList= Folder.Files(FolderName)[Name],
    FileNum={0..List.Count(FileNameList)-1},   
    DataF= List.Transform(FileNum, (f) =>   
    let       
        FFullName =FolderName & "\" & FileNameList{f},
        Source1 = Table.SelectRows(Excel.Workbook(File.Contents(FFullName), null, true),each ([Kind] = "Sheet" and Text.Start([Item],4) = "Nhom")),
        SourceData=Source1[Data],
        SheetName=Source1[Name],
        SheetNum={0..List.Count(SheetName)-1},
        DataN= List.Transform(SheetNum, (i) =>
        let
            Data0 = Table.RemoveFirstN((SourceData{i}),1),
            DataFName = Table.AddColumn(Table.PromoteHeaders(Data0), "File", each FileNameList{f}),
            Datai = Table.AddColumn(DataFName, "Nhóm", each SheetName{i})
        in Datai),
        List1 =  Table.FromList(DataN, Splitter.SplitByNothing()),
        ListColumns = Table.ColumnNames(List1{0}[Column1]),
        Ketqua1 = Table.ExpandTableColumn(List1,"Column1",ListColumns)
    in Ketqua1),
    List2 =Table.FromList(DataF,Splitter.SplitByNothing()),
    ListColumns2 = Table.ColumnNames(DataF{0}),
    Ketqua = Table.ExpandTableColumn(List2, "Column1", ListColumns2)
in
    Ketqua
 
Web KT
Back
Top Bottom