Google Spreadsheet - Convert multiple columns to one column

穿精又带淫゛_ 提交于 2020-01-15 05:18:06

问题


I want to loop through a set of rows in a Google Spreadsheet that look like this:

XXX 123 234 234

YYY 789 098 765

ZZZ 76 123 345

End Result Needs to Be:

XXX: 123

XXX: 234

XXX: 234

YYY: 789

YYY: 098

etc.

My current code:

function loopshoplocations(){ 
  var sheet = SpreadsheetApp.getActiveSheet(); 
  var data = sheet.getRange('A4:A8').getValues(); 
  var i=0; 
  for(i = 0; i < 4; i++){
    return ('Shop Location: ' + data[i][0]);
  }}

回答1:


This code assumes that there is a header row on row one. The data gets appended at the end of the sheet. If you want something different, the code would need to be adjusted.

function loopshoplocations() {
  var data,L,outerArray,innerArray,numberOfRows,sheet,startRow;

  startRow = 2;

  sheet = SpreadsheetApp.getActiveSheet();
  numberOfRows = sheet.getLastRow();
  data = sheet.getRange(startRow,1,numberOfRows-startRow+1,4).getValues(); 
  L = data.length;

  //Logger.log(data);

  outerArray = [];

  var i,j;
  for(i = 0; i < L; i++){

    for (j=1; j<4 ; j+=1) {//Begin count at one, not zero
      innerArray = [];//Reset
      innerArray.push(data[i][0]);
      innerArray.push(data[i][j]);
      //Logger.log(innerArray)
      outerArray.push(innerArray);
    };
  };

  sheet.getRange(numberOfRows+1,1,outerArray.length,outerArray[0].length).setValues(outerArray);
};



回答2:


Alternatively with a formula

=ArrayFormula( transpose(split(query(rept(left(A2:A, 3)&" ", 3),,50000), " "))&": "
&transpose(split(query(regexreplace(A2:A, "^(.+?)\s",""),,50000), " ")))

Also see this screenshot:



来源:https://stackoverflow.com/questions/38726282/google-spreadsheet-convert-multiple-columns-to-one-column

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!