从关联阵列中的2列中收集数据



我正在寻找一种算法来从两个谷歌工作表列中收集数据。

事实上,我有第一个专栏";标签";,第二个";标称";。GSheets 上的数据视图

我想创建一个表,允许我为每一行关联对应的主格,而不会有重复。

例如,如果我的行LC05和LC01都有主格";1500〃;我想要这样的东西:

[[LC01,[7501500]],[LC05,[15002000]]等…]

我已经尝试了一些模糊的东西,但没有成功,而且根本没有优化。我只是试着玩列表,以获得我上面精确的模式。

function test(){
var id = DriveApp.getFilesByName("Histo").next().getId()
var ss = SpreadsheetApp.openById(id);
var s = ss.getSheets()[0];
var val = s.getRange(2,7,s.getLastRow()-1).getValues()
var val2 = s.getRange(2,1,s.getLastRow()-1).getValues()
var tab = [];
for (var i = 0; i < val.length ; i++){
if(tab.indexOf(val2[i][0]) == -1){
tab.push(val2[i][0]);
}
}
for (var j = 0; j<tab.length; j++){
tab[j] = [tab[j]];
}

for(var x = 0;x<val2.length;x++){
for(var t = 0; t<tab.length;t++){
if(tab[t].indexOf(val[x][0]) == -1){
tab[t].push(val[x][0]);
}
}
}

结果:

[[LC05,1500.0,1250.0,1000.0,750.0,3000.0,1200.0,2000.0,450.0,575.0,500.0,1300.0,600.0,630.0,1900.0,2850.0,650.0],[LC07,1500.0、1250.0、1000.0、750.0、3000.0、1200.0、2000.0、450.0、575.0、500.0、1300.0、600.0、630.0、1900.0、2850.0、650.0],[LC09,1500.0,1250.0,1000.0,750.0,3000.0,1200.0,2000.0,450.0,575.0,500.0,1300.0,600.0,630.0,1900.0,2850.0,650.0],[LC01,1500.0、1250.0、1000.0、750.0、3000.0、1200.0、2000.0、450.0、575.0、500.0、1300.0、600.0、630.0、1900.0、2850.0、650.0]1900.02850.0650.0],[po621500.01250.01000.0750.03000.01200.02000.0450.0575.0500.01300.0600.0630.01900.02850.0650.0]]

对于简单的解决方案,请尝试

使用创建唯一id的列表

=unique(A2:A)

然后基于唯一值过滤列G

=join(", "; unique(filter($G$2:$G; $A$2:$A=$J2)))

根据需要向下拖动第二个公式。

查看电子表格中的示例,看看这是否有帮助?

编辑:我还在M2 中输入了一个更复杂的解决方案

=ArrayFormula(query(substitute(trim(split(regexreplace(transpose(query(transpose(query(unique({A2:A&"_" G2:G G2:G}); "Select Col1, sum(Col2)*1 where Col1 <>'' group by Col1 pivot Col3";0));;50000)); "s{2,}"; " "); "_")); " "; ", "); "where not(Col1) contains 'null'";0))

最新更新