需要计算多张纸中姓名(COL1 + COL2)的出现次数。
示例数据结构:
{Sheet1} {Sheet2} {Sheet3}
------------- ------------- -------------
COL1 COL2 COL1 COL2 COL1 COL2
---- ---- ---- ---- ---- ----
Jim Smith Jim Smith Burt Malone
Dana Brown Jill White Jim Smith
Jane Doe Dana Brown Dana Brown
Jane Johnson Angie Wild Jill White
Burt Malone Tim Peterson
预期结果:
NAME COUNT
---------- -----
Angie Wild 1
Burt Malone 2
Dana Brown 3
Jane Doe 1
Jane Johnson 1
Jill White 2
Jim Smith 2
Tim Peterson 1
答案 0 :(得分:0)
唯一键将非常有用,不仅可以解决您的直接问题,而且很有可能避免其他问题。仅将两列串联即可提供这一点(对于示例数据,不一定是其他情况,因此我建议使用更健壮的索引系统)。有了这样的键,在每张工作表的ColumnI中说,可以使用如下公式:
=query({Sheet1!I1:I11;Sheet2!I1:I11;Sheet3!I1:I11},"SELECT Col1, count(Col1) WHERE Col1 IS NOT null group by Col1")
以上要求使用此类术语:Sheet3!I1:I11
用于每张纸。
答案 1 :(得分:0)
以下是一个示例脚本,用于执行相同操作:
//@OnlyCurrentDoc
function countUnique() {
var ss = SpreadsheetApp.getActive();
var sheets = ss.getSheets(); //get All Sheets
var input = {},output=[];
for (var i in sheets){ //Loop through all sheets for A:B column values
var values = sheets[i].getRange("A1:B"+sheets[i].getLastRow()).getValues();
values.forEach(function(e){
var a = (e[0]+' '+e[1]).trim(); // create unique property name with A&B
if (a){
input[a] = input[a]+1 || 1; //increment count of name for each occurence
}
});
//Logger.log(input);
}
var output = Object.keys(input).map(function(e){return [e,input[e]]}); //Convert it back to array
//Logger.log(output);
sheets[0].getRange(sheets[0].getLastRow()+1,1, output.length,output[0].length).setValues(output); //set the output values to Sheet1 Last Row
}