Chia nội dung của một hàng thành nhiều hàng?


7

Tôi có một bảng trong đó mỗi hàng chứa dữ liệu như thế này:

Tên đội | Thành viên đầu tiên | Thành viên thứ hai | Thành viên thứ ba | Mô tả đội

Có thể chuyển đổi / ngắt dữ liệu này để mỗi hàng chỉ chứa một thành viên không? Như thế này:

Tên đội | Thành viên đầu tiên | Mô tả đội
Tên đội | Thành viên thứ hai | Mô tả đội
Tên đội | Thành viên thứ ba | Mô tả đội

1
Dấu phẩy có nghĩa là dấu phân cách cột hay nó là văn bản bên trong chuỗi được trích dẫn?
tân

Dấu phẩy có nghĩa là dấu phân cách cột.
Dom Delimar

2
Tôi đã điều chỉnh định dạng để làm cho nó trông giống dữ liệu dạng bảng hơn.
ale

1
@DomDelimar Bạn đã có thời gian để kiểm tra các câu trả lời được đưa ra?
Jacob Jan Tuinstra

Câu trả lời:


5

Bạn có thể chuyển đổi các cột bằng cách sử dụng TRANSPOSE, giả sử "Thành viên thứ nhất, Thành viên thứ hai, Thành viên thứ ba" là A1: A3, bạn có thể sử dụng chức năng ở một nơi nào đó,

 = TRANSPOSE(A1:A3)

sẽ điền vào cột như bên dưới,

 First member
 Second member
 Third member

Để lặp lại cột trước và sau các thành viên trong nhóm, bạn có thể thử,

 = TRANSPOSE (SPLIT(REPT(CONCAT(A1, ","), COUNTA(A1:A3)), ","))
 = TRANSPOSE (SPLIT(REPT(CONCAT(A5, ","), COUNTA(A1:A3)), ","))

lặp lại cột với dấu phẩy phân tách, sau đó phân tách và biến đổi mảng kết quả.


1
Có cách nào để làm điều đó kết hợp với ARRAYFORMULA?
Jacob Jan Tuinstra

Đây là một lời khuyên tốt nhưng tôi không quen thuộc với ARRAYFORMULA.
tân


2

Sử dụng các tính năng xử lý mảng và LỌC Google Sheets để có kết quả mong muốn

=FILTER({A:A,B:B,E:E;A:A,C:C,E:E;A:A,D:D,E:E},LEN({A:A;A:A;A:A}))

Lưu ý: Nếu bảng tính của bạn sử dụng dấu phẩy ,làm dấu tách thập phân, hãy thay thế dấu phẩy trong công thức trên bằng dấu gạch chéo ngược\


1

Nếu bạn sử dụng Tập lệnh Google Apps sau, nó sẽ được thực hiện tự động:

function SPLIT() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();  
  var sh0 = ss.getSheets()[0], sh1 = ss.getSheets()[1];

  // get data from sheet 1
  var data = sh0.getDataRange().getValues();

  // create array to hold data
  var aMain = new Array();

  // itterate through data and add to array
  for(var i=1, dLen=data.length; i<dLen; i++) {
    for(var j=1; j<4; j++) {
      aMain.push([data[i][0],data[i][j],data[i][4]]);
    }
  }

  // add array of data to second sheet
  sh1.getRange(2, 1, aMain.length, 3).setValues(aMain);
}

Tôi đã chuẩn bị một tệp ví dụ: SPLIT . Khi mở, một mục menu bổ sung sẽ được tạo với hai tùy chọn.

Bạn cần phải điều chỉnh tập lệnh để nó hoạt động trong trang tính của bạn. Thêm tập lệnh thông qua tùy chọn menu Công cụ , Trình chỉnh sửa tập lệnh


0

Để thêm vào giải pháp tuyệt vời của Rubén, sửa đổi sau đây cho công thức của anh ấy sẽ bỏ qua mọi nhóm người dùng và nhóm trống:

=QUERY(FILTER({A:A,B:B,E:E;A:A,C:C,E:E;A:A,D:D,E:E},LEN({A:A;A:A;A:A})),"Select * Where Not Col2='' Order by Col1 Asc")


0

=ARRAYFORMULA(QUERY(TRIM(SPLIT(TRANSPOSE(SPLIT(QUERY(TRANSPOSE(QUERY(TRANSPOSE(
 IF(LEN(A1:A), "♠"&A1:A&"♦"&B1:D&"♦"&E1:E, )), , 999^99)), , 999^99), 
 "♠")), "♦")), "where Col2 is not null"))

0

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.