Nhờ giúp đỡ nối các mảng dữ liệu thành 1 bảng (1 người xem)

  • Thread starter Thread starter YenLV
  • Ngày gửi Ngày gửi
Liên hệ QC

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

YenLV

Thành viên chính thức
Tham gia
28/12/11
Bài viết
69
Được thích
14
Em có 3 mảng dữ liệu muốn gộp thành 1 bảng dữ liệu, yêu cầu cụ thể em có ghi trong file đính kèm, mong các anh chị giúp đỡ
 

File đính kèm

Em có 3 mảng dữ liệu muốn gộp thành 1 bảng dữ liệu, yêu cầu cụ thể em có ghi trong file đính kèm, mong các anh chị giúp đỡ
Bạn trả lời một số câu hỏi sau đã nhé:
1. Dữ liệu thực tế của bạn chỉ gồm bấy nhiêu dòng, cột hay nhiều hơn?
2. Thứ tự duyệt có phải là hết cột C: D rồi đến E:F, rồi mới đến G:H không?
3. Nếu gặp vùng trống như E3:F3 thì bỏ qua hay sao?
 
Lần chỉnh sửa cuối:
Em xin trả lời anh, mong anh giúp đỡ ạ
1. Dữ liệu thực tế của em gồm nhiều dòng, cột nhưng em chỉ để 3 mục đích để xin hướng dẫn cách làm của các anh chị
2.Thự tự duyệt là C-D, E-F rồi đến G-H (về thứ tự duyệt này là theo chu kỳ 2 cột 1 lần hoặc nhiều hơn ạ)
3. Nếu gặp vùng trắng thì bỏ qua ạ
 
Em xin trả lời anh, mong anh giúp đỡ ạ
1. Dữ liệu thực tế của em gồm nhiều dòng, cột nhưng em chỉ để 3 mục đích để xin hướng dẫn cách làm của các anh chị
2.Thự tự duyệt là C-D, E-F rồi đến G-H (về thứ tự duyệt này là theo chu kỳ 2 cột 1 lần hoặc nhiều hơn ạ)
3. Nếu gặp vùng trắng thì bỏ qua ạ
Thử:
Mã:
C11=IFERROR(INDIRECT(MID(REPT(TEXT(MOD(AGGREGATE(15,6,(($C$2:$G$4)*10^6+COLUMN(C$1:G$1)*10^3+ROW($B$2:$B$4))/($C$2:$G$4<>""),ROW(A1)),10^6),"C000R000"),2),5,8),),"")
Enter, fill qua phải. Rồi fill cả hàng xuống dưới.
Xem file kèm.

Thân
 

File đính kèm

Chân thành cảm ơn anh Hiệp đã giúp đỡ, em nghĩ có thể xử lý cho trường hợp phức tạp hơn thêm 1 cặp nữa, nhưng vì hàm phức tạp nên em chưa hiểu hết, anh có thể giúp em lần nữa được ko (em gửi file đính kèm), nếu có thể xin anh giải thích cách sử dụng để em có thể hiểu để ứng dụng tốt hơn ạ, thanks anh
 

File đính kèm

Chân thành cảm ơn anh Hiệp đã giúp đỡ, em nghĩ có thể xử lý cho trường hợp phức tạp hơn thêm 1 cặp nữa, nhưng vì hàm phức tạp nên em chưa hiểu hết, anh có thể giúp em lần nữa được ko (em gửi file đính kèm), nếu có thể xin anh giải thích cách sử dụng để em có thể hiểu để ứng dụng tốt hơn ạ, Cảm ơn anh
=IFERROR(INDIRECT(MID(REPT(TEXT(MOD(AGGREGATE(15,6,(($C$2: $I$4)*10^6+COLUMN(C$1: I$1)*10^3+ROW($B$2: $B$4))/($C$2: $I$4<>""),ROW(A1)),10^6),"C000R000"),2),5,8),),"")
  1. AGGREGATE(15,6,(($C$2: $I$4)*10^6+COLUMN(C$1: I$1)*10^3+ROW($B$2: $B$4))/($C$2: $I$4<>""),ROW(A1))
    • AGGREGATE(15,6, 'Mảng tính toán', ROW(A1)): là công thức Mảng tìm giá trị nhỏ thứ ROW(A1) (ROW(A1)=1 tức tìm nhỏ nhất, khi kéo xuống thành ROW(A2)=2, tức tìm nhỏ thứ hai...v.v...). Với đối số 6, hàm này sẽ phớt lờ các giá trị lỗi có trong 'Mảng tính toán', nó chỉ tính cho các phần tử có giá trị mà thôi.
    • ($C$2: $I$4)*10^6: Lấy các ngày nhân cho 1.000.000, Ví dụ: ngày 14/08/2018*10^6-->43.326.000.000..v.v. Cái này tạo thành Mảng 2 chiều có 3 hàng, 7 cột, chứa các ngày đã nhân với 10^6, còn các ô chứa "Chuỗi" không nhân được sẽ báo lỗi.
    • COLUMN(C$1: I$1)*10^3: Tương tự lấy các cột từ C: I, tức 3 đến 9 đem nhân cho 1.000, thành Mảng {3000,4000,5000,6000,7000,8000,9000}. Để tương ứng với số cột đang có của dữ liệu ngày.
    • ROW($B$2:$B$4): là Mảng hàng đơn vị {2;3;4}, tương ứng với số hàng đang có của dữ liệu.
    • /($C$2:$I$4<>""): lựa ra các ô nào trong Vùng C2: I4 là rỗng, nhờ vào việc dùng phép chia 1/0 để báo lỗi cho Aggregate(). Đây chính là điều kiện lọc loại bỏ các ô bị rỗng
    • Kết hợp các đoạn công thức trên tạo ra một mảng ghi nhận vị trí "Số hàng" và "Số cột" của dữ liệu đã loại bỏ rỗng và sắp xếp từ nhỏ đến lớn (chức năng đối số 15 của Aggregate()). Ví dụ: tạo mảng {43.326.003.002, 43.326.003.003, 43.326.003.004; 43.326.004.002, 43.326.004.003,...}
  2. INDIRECT(MID(REPT(TEXT(MOD( 'Kết quả từ Công thức 1.' ,10^6),"C000R000"),2),5,8),)
    • MOD( 'Kết quả từ công thức 1.' , 10^6): từ giá trị nhỏ nhất (hoặc thứ n) của kết quả, tách lấy số dòng và cột, Vì dụ: giá trị nhỏ nhất là 43.326.003.002 (tức ngày 14/08/2018 cột 3 hàng 2), lấy ra giá trị 3002.
    • TEXT( MOD( 'Kết quả từ công thức 1.' , 10^6) , "C000R000" ), Vd: như trên sẽ là =TEXT( 43.326.003.002 , 10^6) , "C000R000" ) định dạng về kết quả "C003R002" (tức cột 3 hàng 2)
    • REPT( TEXT( 'trên' ) , 2): "nhân bản" giá trị từ kết quả TEXT(), Vd: "C003R002C003R002"
    • MID( REPT('trên') , 5, 8 ): từ giá trị "nhân bản" trích xuất lấy từ vị trí 5, lấy 8 ký tự, tức thành R002C003 (hàng 2, cột 3).
    • INDIRECT( MID( 'trên' ) , 0 ): hay INDIRECT( "R002C003" , 0 ): tức lấy giá trị nội tại theo cách biểu diễn ô theo định dạng RnCn (đối số 0 của Indirect).
  3. Cái còn lại IFERROR(.....,"" ) chắc bạn không cần giải thích cũng biết.
Thân
 

File đính kèm

Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom