Google sheets 年度总计公式
我有一个电子表格,我用它来记录攀登的进度(下面显示的片段)。我有一些公式和图表可以记录一段时间内特定等级的计数,但我很难用一个公式来记录(按年份)的总英尺数。我打算把这个放在另一张纸上 基本上我想要一个单细胞,它有点像。。。如果是1!A:A以“21”开头。如果是1!E:E,“*%”(这意味着我实际完成了爬升),然后将行总爬升长度(Sheet1!J:J*Sheet1!I:I)添加到当年的跑步总长度中Google sheets 年度总计公式,google-sheets,Google Sheets,我有一个电子表格,我用它来记录攀登的进度(下面显示的片段)。我有一些公式和图表可以记录一段时间内特定等级的计数,但我很难用一个公式来记录(按年份)的总英尺数。我打算把这个放在另一张纸上 基本上我想要一个单细胞,它有点像。。。如果是1!A:A以“21”开头。如果是1!E:E,“*%”(这意味着我实际完成了爬升),然后将行总爬升长度(Sheet1!J:J*Sheet1!I:I)添加到当年的跑步总长度中 执行此操作的最佳方法是什么?您可以尝试使用应用程序脚本并创建脚本来管理任务 例如,您可能想看看下
执行此操作的最佳方法是什么?您可以尝试使用应用程序脚本并创建脚本来管理任务 例如,您可能想看看下面的代码段: 代码 参考文献
- )
- 谢谢你。。。使用您的示例并添加一些内容(还需要解析int totals)
函数calculateTotal(){
设ss=SpreadsheetApp.getActive().getSheetByName('Sheet1');
设s7=SpreadsheetApp.getActive().getSheetByName('Sheet7');
让date=ss.getRange('A2:A').getDisplayValues();
让type=ss.getRange('F2:F').getDisplayValues();
让trys=ss.getRange('E2:E').getDisplayValues();
设length=ss.getRange('I2:I').getDisplayValues();
设laps=ss.getRange('J2:J').getDisplayValues();
设btotal=0;
设rtotal=0;
对于(假设i=0;如果A列是真实日期,那么使用数据透视表。@ScottCraner我将对此进行分析。我在Google Sheets中,但我能够创建一个数据透视表,我只需要对如何使用数据透视表更聪明一点。如果Google Sheets为什么要使用Excel标记?请适当地标记它,了解Google Sheets的人可能会找到不同的数据透视表或打赌ter route.ShaneKVery。共享一份您的工作表。因此,基本上您希望添加今年的所有爬升?您是否也有去年的日期?如果没有,为什么不直接使用If
和SUM
添加它们?@ShaneKVery,非常感谢您的输入。我正在设置一个触发器,以便在电子表格运行时运行如果可能的话可以修改。关于如何在同一个脚本中获取唯一的日期并转储每天的总数,有什么想法吗?
function calculateTotal() {
let ss = SpreadsheetApp.getActive().getSheetByName('Sheet1');
let date = ss.getRange('A2:A').getDisplayValues();
let tries = ss.getRange('E2:E').getDisplayValues();
let lengths = ss.getRange('I2:I').getDisplayValues();
let total = 0;
for (let i =0; i<date.length; i++) {
if (date[i][0].toString().startsWith('21') != false && tries[i][0].toString().includes('%') == false) {
total = total+lengths[i][0];
}
}
ss.getRange('M2').setValue(total);
}
function createTrigger() {
ScriptApp.newTrigger("calculateTotal")
.timeBased()
.atHour(9)
.everyDays(1)
.create();
}
function calculateTotal() {
let ss = SpreadsheetApp.getActive().getSheetByName('Sheet1');
let s7 = SpreadsheetApp.getActive().getSheetByName('Sheet7');
let date = ss.getRange('A2:A').getDisplayValues();
let type = ss.getRange('F2:F').getDisplayValues();
let tries = ss.getRange('E2:E').getDisplayValues();
let lengths = ss.getRange('I2:I').getDisplayValues();
let laps = ss.getRange('J2:J').getDisplayValues();
let btotal = 0;
let rtotal = 0;
for (let i =0; i<date.length; i++) {
if (date[i][0].toString().startsWith('21') != false && tries[i][0].toString().includes('%') == false) {
// Totals for Bouldering
if (type[i][0] == "B") {
btotal = btotal + parseInt(lengths[i][0]*laps[i][0]);
}
// Totals for Top Rope or Sport
else {
rtotal = rtotal + parseInt(lengths[i][0]*laps[i][0])
}
}
}
console.log("Roped total = " + rtotal)
console.log("Bouldering total = " + btotal)
s7.getRange('B2').setValue(rtotal);
s7.getRange('B3').setValue(btotal);
}