我有一個用于跟蹤申請人面試資料的 Google 表格。我正在嘗試根據每個候選人的面試回合和回合分數來找到每個候選人的回合平均分數。我想出了如何使用查詢函式收集這些資料,但對于這個用例,特別是它必須在腳本中完成。
這是作業表的示例
任何幫助將不勝感激。
uj5u.com熱心網友回復:
平均分的平均值
function lfunko() {
const ss = SpreadsheetApp.getActive();
const sh = ss.getSheetByName("Sheet0");
const vs = sh.getRange(2, 1, sh.getLastRow() - 1, sh.getLastColumn()).getValues();
let co = { pA: [] }
vs.forEach((r, i) => {
let p = `${r[0]}/${r[2]}`;
if (!co.hasOwnProperty(p)) {
co[p] = { cnt: 1, sum: r[4], idx: i }
co.pA.push(p);
} else {
co[p].cnt = 1;
co[p].sum = r[4];
}
});
let vo = vs.map((r, i) => {
let p = `${r[0]}/${r[2]}`;
if (i == co[p].idx) {
return [co[p].sum / co[p].cnt];
} else {
return [''];
}
})
sh.getRange(2, 6, vo.length, vo[0].length).setValues(vo);
}
輸出:
| 候選人 | 位置 | 面試輪 | 小組成員 | 回合分數 | 回合平均分 |
|---|---|---|---|---|---|
| 鮑勃 | 測驗儀 | 第一的 | 喬恩 | 3 | 4 |
| 鮑勃 | 測驗儀 | 第一的 | 珍妮特 | 4 | |
| 鮑勃 | 測驗儀 | 第一的 | 喬 | 5 | |
| 鮑勃 | 測驗儀 | 第二 | 薩爾 | 4 | 3.333333333 |
| 鮑勃 | 測驗儀 | 第二 | 萊利 | 3 | |
| 鮑勃 | 測驗儀 | 第二 | 泰 | 3 | |
| 鮑勃 | 測驗儀 | 最終的 | 萬達 | 5 | 4.666666667 |
| 鮑勃 | 測驗儀 | 最終的 | 凱利 | 4 | |
| 鮑勃 | 測驗儀 | 最終的 | 阿諾德 | 5 | |
| 鋁 | 高級測驗員 | 第一的 | 本 | 2 | 3 |
| 鋁 | 高級測驗員 | 第一的 | 托里 | 3 | |
| 鋁 | 高級測驗員 | 第一的 | 哈利 | 4 | |
| 鋁 | 高級測驗員 | 第二 | 凱特 | 4 | 3.666666667 |
| 鋁 | 高級測驗員 | 第二 | 溫迪 | 5 | |
| 鋁 | 高級測驗員 | 第二 | 卡爾 | 2 | |
| 鋁 | 高級測驗員 | 最終的 | 山姆 | 5 | 4 |
| 鋁 | 高級測驗員 | 最終的 | 杰克 | 3 | |
| 鋁 | 高級測驗員 | 最終的 | 特洛伊 | 4 |
uj5u.com熱心網友回復:
如果您需要將資料作為永久靜態值獲取,即使源資料被修改,以后也不會更改,您仍然可以使用query()公式獲取結果,然后使用短腳本將公式及其結果替換為靜態價值觀。要試用它,請插入 > 作業表并使用它:
=query(sumAve!A1:E, "select A, B, avg(D) where D is not null group by A, B", 1)
/**
* Replaces formulas with values in the active sheet.
*/
function replaceFormulasWithValuesInActiveSheet() {
const wholeSheet = SpreadsheetApp.getActiveSheet().getDataRange();
wholeSheet.setValues(wholeSheet.getValues());
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/480311.html
上一篇:用于INSERT_COLUMN的Google表格應用腳本onChange(事件):如何獲取插入了哪一列?[復制]
