Xin mọi người giúp e xử lý file Xuất nhập tồn (từ dọc -> ngang) ạ! (1 người xem)

Người dùng đang xem chủ đề này

Tôi tuân thủ nội quy khi đăng bài

oiquetoi

Thành viên mới
Tham gia
18/8/09
Bài viết
9
Được thích
0
E có dữ liệu trong sheet Detail ngày tháng theo chiều dọc; Bây giờ ông sếp e lại muốn tổng hợp sang dạng ngang như sheet bên cạnh.
Các bác xem trong file đính kèm giúp e ạ
Vậy có dùng Pivot table để chuyển sang được không hay là phải dùng hàm như thế nào ạ? càng đơn giản càng tốt ạ.
E xin cảm ơn mọi người nhiều ạ.
1767799054377.png


chuyển sang dạng ngang như này ạ
1767799089160.png
 

File đính kèm

Nếu là pivot table thì làm như hình:

1767839547226.png

Kết quả:

1767839579148.png

Tuy nhiên cách này không hay bằng Power query.
 
Lần chỉnh sửa cuối:
Nếu dùng Power query
PHP:
let
    Source = Excel.CurrentWorkbook(){[Name="detail"]}[Content],
    FilterNull = Table.SelectRows(Source, each ([Mã NVL] <> null)),
    Unpivot = Table.UnpivotOtherColumns(FilterNull, {"Ngày tháng", "Mã NVL", "Chiều rộng (mm)", "Đơn vị"}, "Attribute", "Value"),
    Types = Table.TransformColumnTypes(Unpivot,{{"Value", Int64.Type}, {"Chiều rộng (mm)", Int64.Type}, {"Ngày tháng", type date}}),
    Pivot = Table.Pivot(Table.TransformColumnTypes(Types, {{"Ngày tháng", type date}}, "vn-VN"), 
         List.Distinct(Table.TransformColumnTypes(Types, {{"Ngày tháng", type text}}, "vn-VN")[#"Ngày tháng"]), "Ngày tháng", "Value", List.Sum)
in
    Pivot
 

File đính kèm

Lần chỉnh sửa cuối:
Thêm một sự lựa chọn
Mã:
=LET(
  rng, Detail!B4:O1967,
  hdr, TAKE(rng, 1),
  data, DROP(rng, 1),
  Ngay, TAKE(data, , 1),
  Ma, INDEX(data, , 2),
  Rong, INDEX(data, , 3),
  Donvi, INDEX(data, , 4),
  dsNgay, SORT(UNIQUE(Ngay)),
  dsID, UNIQUE(HSTACK(Ma, Rong, Donvi)),
  nd, {"Tồn đầu";"Tổng nhập";"Tổng nhập lại";"Nhập lại Slit";"Xuất Slit";"Nhập XK";"Xuất XK";"Tổng xuất GC";"Tổng xuất ĐC";"Tồn cuối"},
  col_idx, {5,6,7,8,9,10,11,12,13,14},
  m, ROWS(nd),
  rID, ROWS(dsID),
  hang, MAKEARRAY(rID * m, 4,
    LAMBDA(r,c,
      LET(i, INT((r - 1) / m) + 1, j, MOD(r - 1, m) + 1,
        CHOOSE(c, INDEX(dsID, i, 1), INDEX(dsID, i, 2), INDEX(dsID, i, 3), INDEX(nd, j))
      )
    )
  ),
  mat, MAKEARRAY(rID * m, ROWS(dsNgay),
    LAMBDA(r,k,
      LET(
        i, INT((r - 1) / m) + 1,
        j, MOD(r - 1, m) + 1,
        v,
        SUMIFS(
          INDEX(data, , INDEX(col_idx, j)),
          Ma, INDEX(dsID, i, 1),
          Rong, INDEX(dsID, i, 2),
          Donvi, INDEX(dsID, i, 3),
          Ngay, INDEX(dsNgay, k)
        ),
        IF(v=0,"",v)
      )
    )
  ),
  VSTACK(
    HSTACK({"Mã NVL","Chiều rộng (mm)","Đơn vị","Nội dung"}, TRANSPOSE(TEXT(dsNgay,"dd/mm/yyyy"))),
    HSTACK(hang, mat)
  )
)
1767848796196.png
 

File đính kèm

Pivot thì chưa thử, nhưng query thì như thế này.
cảm ơn bạn nhé. Làm như thế nào vậy bạn hướng dẫn mình được không hay cho mình xin file mình mò vậy?
Bài đã được tự động gộp:

Nếu dùng Power query
PHP:
let
    Source = Excel.CurrentWorkbook(){[Name="detail"]}[Content],
    FilterNull = Table.SelectRows(Source, each ([Mã NVL] <> null)),
    Unpivot = Table.UnpivotOtherColumns(FilterNull, {"Ngày tháng", "Mã NVL", "Chiều rộng (mm)", "Đơn vị"}, "Attribute", "Value"),
    Types = Table.TransformColumnTypes(Unpivot,{{"Value", Int64.Type}, {"Chiều rộng (mm)", Int64.Type}, {"Ngày tháng", type date}}),
    Pivot = Table.Pivot(Table.TransformColumnTypes(Types, {{"Ngày tháng", type date}}, "vn-VN"),
         List.Distinct(Table.TransformColumnTypes(Types, {{"Ngày tháng", type text}}, "vn-VN")[#"Ngày tháng"]), "Ngày tháng", "Value", List.Sum)
in
    Pivot
cảm ơn bạn nhiều nhé, mình chưa dùng query nhiều nên phải tìm hiểu mới được.
 
Lần chỉnh sửa cuối:
Nếu là pivot table thì làm như hình:

View attachment 310815

Kết quả:

View attachment 310816

Tuy nhiên cách này không hay bằng Power query.
cảm ơn bạn nhiều nhé, bạn có thể cho mình xin file để mình nghiên cứu được không? làm sao để có value trong trường Row vậy?
Bài đã được tự động gộp:

Thêm một sự lựa chọn
Mã:
=LET(
  rng, Detail!B4:O1967,
  hdr, TAKE(rng, 1),
  data, DROP(rng, 1),
  Ngay, TAKE(data, , 1),
  Ma, INDEX(data, , 2),
  Rong, INDEX(data, , 3),
  Donvi, INDEX(data, , 4),
  dsNgay, SORT(UNIQUE(Ngay)),
  dsID, UNIQUE(HSTACK(Ma, Rong, Donvi)),
  nd, {"Tồn đầu";"Tổng nhập";"Tổng nhập lại";"Nhập lại Slit";"Xuất Slit";"Nhập XK";"Xuất XK";"Tổng xuất GC";"Tổng xuất ĐC";"Tồn cuối"},
  col_idx, {5,6,7,8,9,10,11,12,13,14},
  m, ROWS(nd),
  rID, ROWS(dsID),
  hang, MAKEARRAY(rID * m, 4,
    LAMBDA(r,c,
      LET(i, INT((r - 1) / m) + 1, j, MOD(r - 1, m) + 1,
        CHOOSE(c, INDEX(dsID, i, 1), INDEX(dsID, i, 2), INDEX(dsID, i, 3), INDEX(nd, j))
      )
    )
  ),
  mat, MAKEARRAY(rID * m, ROWS(dsNgay),
    LAMBDA(r,k,
      LET(
        i, INT((r - 1) / m) + 1,
        j, MOD(r - 1, m) + 1,
        v,
        SUMIFS(
          INDEX(data, , INDEX(col_idx, j)),
          Ma, INDEX(dsID, i, 1),
          Rong, INDEX(dsID, i, 2),
          Donvi, INDEX(dsID, i, 3),
          Ngay, INDEX(dsNgay, k)
        ),
        IF(v=0,"",v)
      )
    )
  ),
  VSTACK(
    HSTACK({"Mã NVL","Chiều rộng (mm)","Đơn vị","Nội dung"}, TRANSPOSE(TEXT(dsNgay,"dd/mm/yyyy"))),
    HSTACK(hang, mat)
  )
)
View attachment 310818
cảm ơn bạn nhiều nhé, mình sẽ nghiên cứu xem như thế nào.
 
cảm ơn bạn nhiều nhé, bạn có thể cho mình xin file để mình nghiên cứu được không? làm sao để có value trong trường Row vậy?
File có rồi mà? Bạn chỉ đọc bài mà chưa xem tới việc có file hay không rồi không lấy về?
Value muốn nằm ở đâu thì lôi vào đó thôi.
 
File có rồi mà? Bạn chỉ đọc bài mà chưa xem tới việc có file hay không rồi không lấy về?
Value muốn nằm ở đâu thì lôi vào đó thôi.
Cảm ơn bạn nhé, bạn gửi 2 trả lời nên mình xem phần pivot ở trên nên hỏi bạn luôn. tại mình không biết dùng querymaaysys. Mình thấy file rồi, mình sẽ nghiên cứu có gì hỏi bạn giúp nhé. Cảm ơn bạn nhiều lắm.
 

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

Back
Top Bottom