-1

Я уже видел некоторые ответы здесь, но ни один не работает на Excel 2016 для Mac.

Я хочу простое решение для преобразования матрицы в список, как это:

date    city1   city2   cityN
jan1    value   value   value
jan2    value   value   value

в

date    city    value
jan1    city1   value
jan1    city2   value
jan1    cityN   value
jan2    city1   value
jan2    city2   value
jan2    cityN   value

1 ответ1

0

Я использовал скрипт Google Spreedsheet:

function transformData(){

var sheet = SpreadsheetApp.getActiveSheet();
 var data = sheet.getDataRange().getValues();//read whole sheet
 var output = [];
 var headers = data.shift();// get headers
 var empty = headers.shift();//remove empty cell on the left
 var products = [];
   for(var d in data){
     var p = data[d].shift();//get product names in first column of each row
     products.push(p);//store
   }
 Logger.log('headers = '+headers);
 Logger.log('products = '+products);
 Logger.log('data only ='+data);
 for(var h in headers){
   for(var p in products){  // iterate with 2 loops (headers and products)
     var row = [];
     row.push(headers[h]);
     row.push(products[p]);
     row.push(data[p][h])
     output.push(row);//collect data in separate rows in output array
   }
 }
 Logger.log('output array = '+output);
 var ns = SpreadsheetApp.getActive().getSheets().length+1
 SpreadsheetApp.getActiveSpreadsheet().insertSheet('New Sheet'+ns,ns).getRange(1,1,output.length,output[0].length).setValues(output);
}

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .