2017-03-18 83 views
0

因为我使用Google Form来收集数据。数据源不是我想要的,所以我需要创建一个选项卡并转换数据。[Google表格]从二维网格查找

这里是谷歌表(从谷歌形式导出)

Group Leader Groupmates 
Leader 1  John  Mary  Linda 
Leader 2  KK   Johanna 
Leader 3  Rick 

我转化名称网格到一个数组(下面第一列)的例子。我的问题是我如何找到相应的领导者(下面的第二列)?

Groupmate Group Leader 
John  Leader 1 
Mary  Leader 1 
Linda  Leader 1 
KK   Leader 2 
Johanna Leader 2 
Rick  Leader 3 

非常感谢您

+0

我已创建此附加组件,以帮助为朋友重新安排Google表单数据。你可以试试[这里:](https://chrome.google.com/webstore/detail/data-splitter/dhaihbfkhlfihidfdedfpaalhppaokbm?utm_source=permalink)。运行插件后,它将创建一个侧栏,您可以在其中选择要合并的列并将其组合成一行。 –

回答

0

这将做到这一点。您需要更改表单名称和范围以适合您的数据需求。它还创建了一个自定义菜单来运行它。你可以在表单提交上运行它。

function onOpen() { 
SpreadsheetApp.getActiveSpreadsheet().addMenu(
    'Fix Data', [ 
     { name: 'Fix', functionName: 'reArrange' }, 
     ]); 
} 
function reArrange() { 
    var ss=SpreadsheetApp.getActiveSpreadsheet() 
    var s=ss.getSheetByName("Sheet1")//get data sheet 
    var lr = s.getLastRow() //get last row with data 
    var lc = s.getLastColumn() //get last column with data 
    var s1=ss.getSheetByName("Sheet2")//sheet to write to 
    var rng = s.getRange(2, 2, lr-1,lc).getValues() 
    var newrng=[] //new array 
    for(var i=0;i<rng.length;i++){ //for each row in range 
    for(var j=1;j<rng[0].length;j++){ //for each column in range 
     if(rng[i][j]==""){break} //if column is blank break the J loop 
     newrng.push([rng[i][j],rng[i][0]]) //push values to new array 
    }} 
    s1.getRange(2, 1, newrng.length,newrng[0].length).setValues(newrng)//set values in sheet2 
} 
+0

哦,我的上帝,我认为这只是一个简单的公式。似乎应用脚本是要走的路。 – Winston

+0

如果这适用于您,请批准答案。谢谢。 –

+0

当然。我还没有尝试过。如果有效,将予以批准。谢谢 – Winston