使用 google 应用脚本获取多列的唯一数据
Get unique data with multiple column using google app script
我是 google 应用程序脚本的新手,也是 javascript。需要有关此主题的帮助。
当前数据:
第 1 周美国
第 1 周荷兰
第 1 周南非
第 2 周土耳其
第 2 周英国
第 2 周美国
第 1 周美国
第 2 周英国
修改为:
第 1 周美国 2
荷兰 1
南非 1
第 2 周美国 1
英国 2
土耳其 1
这是一种可能的解决方案。只需将代码复制到脚本编辑器中并保存即可。
然后您可以像这样在电子表格中使用它:=countCountries(A1:B8)
function groupValues(array2D) {
var result = {};
for(var i = 0; i < array2D.length; i++) {
if(!(array2D[i] instanceof Array) || array2D[i].length < 2) throw new Error("two columns are needed");
if(!result[array2D[i][0]]) result[array2D[i][0]] = [];
result[array2D[i][0]].push(array2D[i][1]);
}
return result;
}
function countValues(array) {
var result = {};
for(var i = 0; i < array.length; i++) {
if(!result[array[i]]) result[array[i]] = 0;
result[array[i]] = result[array[i]] + 1;
}
return result;
}
function toArray(o) {
var result = [];
for(key in o) {
result.push([key, o[key]]);
}
return result;
}
function countCountries(range) {
var grouped = toArray(groupValues(range));
grouped.sort();
grouped.forEach(function(values) {
values[1] = toArray(countValues(values[1]));
});
var result = [];
for(var i = 0; i < grouped.length; i++) {
result.push([grouped[i][0], grouped[i][1][0][0], grouped[i][1][0][1]]);
for(var j = 1; j < grouped[i][1].length; j++) {
result.push(["", grouped[i][1][j][0], grouped[i][1][j][1]]);
}
}
return result;
}
=QUERY(A14:B21,"Select A,B,Count(B) group by A,B")
我是 google 应用程序脚本的新手,也是 javascript。需要有关此主题的帮助。
当前数据:
第 1 周美国
第 1 周荷兰
第 1 周南非
第 2 周土耳其
第 2 周英国
第 2 周美国
第 1 周美国
第 2 周英国
修改为:
第 1 周美国 2
荷兰 1
南非 1
第 2 周美国 1
英国 2
土耳其 1
这是一种可能的解决方案。只需将代码复制到脚本编辑器中并保存即可。
然后您可以像这样在电子表格中使用它:=countCountries(A1:B8)
function groupValues(array2D) {
var result = {};
for(var i = 0; i < array2D.length; i++) {
if(!(array2D[i] instanceof Array) || array2D[i].length < 2) throw new Error("two columns are needed");
if(!result[array2D[i][0]]) result[array2D[i][0]] = [];
result[array2D[i][0]].push(array2D[i][1]);
}
return result;
}
function countValues(array) {
var result = {};
for(var i = 0; i < array.length; i++) {
if(!result[array[i]]) result[array[i]] = 0;
result[array[i]] = result[array[i]] + 1;
}
return result;
}
function toArray(o) {
var result = [];
for(key in o) {
result.push([key, o[key]]);
}
return result;
}
function countCountries(range) {
var grouped = toArray(groupValues(range));
grouped.sort();
grouped.forEach(function(values) {
values[1] = toArray(countValues(values[1]));
});
var result = [];
for(var i = 0; i < grouped.length; i++) {
result.push([grouped[i][0], grouped[i][1][0][0], grouped[i][1][0][1]]);
for(var j = 1; j < grouped[i][1].length; j++) {
result.push(["", grouped[i][1][j][0], grouped[i][1][j][1]]);
}
}
return result;
}
=QUERY(A14:B21,"Select A,B,Count(B) group by A,B")