我有一个像这样的示例的google工作表,用于跟踪光盘高尔夫的得分:
https://docs.google.com/spreadsheets/d/1uxDFXg2kivZWKICeVklugyXH1OWqsq_s5qXZYzgHkt8/edit?usp=sharing
它对于跟踪日常成绩非常有用,但是在开始时只有一张纸可以说每个人的总成绩确实很棒。另外请注意,每张纸上的名称可能不同。
因此,在此示例中,我想要一个新的工作表,该工作表将自动从其他工作表计算分数并显示:
Mike 67,71,65
George 83,70
Phillip 79,72,65
John 66,71
Henry 69
我对excel公式非常不熟悉,因此一直在努力入门。任何帮助将不胜感激。
答案 0 :(得分:3)
您可以使用Google Apps脚本来完成所需的操作。该代码的想法是,它将遍历电子表格中的每个工作表,收集所有参与者及其所有值,最后创建一个摘要,并将其放入“摘要”表中(该表必须存在于您的电子表格中,完全相同的名称):
function updateSummary() {
var sheets = SpreadsheetApp.getActive().getSheets();
var summarySheet = SpreadsheetApp.getActive().getSheetByName('Summary');
var allScores = {};
for (var i=0; i<sheets.length; i++) {
if (sheets[i].getName() == 'Summary') continue;
var nColumns = sheets[i].getLastColumn();
var names = sheets[i].getRange(1, 1, 1, nColumns).getValues()[0];
var scores = sheets[i].getRange(20, 1, 1, nColumns).getValues()[0];
for (var j=0; j<nColumns; j++) {
var currentName = names[j];
var currentScore = scores[j];
if (!allScores.hasOwnProperty(currentName))
allScores[currentName] = [];
allScores[currentName].push(currentScore);
}
}
summarySheet.clear();
for (var key in allScores) {
var row = [key].concat(allScores[key]);
summarySheet.appendRow(row);
}
}
这将使用给定的数据在“摘要”表中创建以下数据:
相反,如果您喜欢按照问题中的描述放置两列(第二列中的每个分数都用逗号分隔),则只需替换上面代码中的最后一个for循环即可:
for (var key in allScores) {
var row = [key].concat(allScores[key].join(','));
summarySheet.appendRow(row);
}
最后,您可以在“摘要”表中创建图像,该图像可以用作运行脚本的按钮。为此:
在工作表中,单击“插入”>“图像”>“图像” 在单元格上。
选择任意图像。
选择新创建的图像,然后单击该图像右上角显示的三个点图标。
单击“分配脚本”,然后输入函数名称(在这种情况下为updateSummary
),然后单击“确定”。
答案 1 :(得分:2)
尝试:
=QUERY(TRANSPOSE({
'MikeGeorgePhillipJohn 121519'!A1:D20,
'MikeGeorgePhillipJohn 122019'!A1:D20,
'MikeJosephPhillipHenry 122719'!A1:D20}),
"select Col1,sum(Col20)
where Col1 is not null
group by Col1
label sum(Col20)''", 0)
=ARRAYFORMULA(SPLIT(TRANSPOSE(QUERY(QUERY(TRANSPOSE({
'MikeGeorgePhillipJohn 121519'!A1:D20,
'MikeGeorgePhillipJohn 122019'!A1:D20,
'MikeJosephPhillipHenry 122719'!A1:D20}),
"select max(Col20)
where Col1 is not null
group by Col20
pivot Col1", 0),,999^99)), " "))