javascript - 用于查找特定列中最后一个单元格总和的脚本
问题描述
我正在尝试为表格制作此 Google 脚本,以便找到 F、N、R、S、T 中最后一个值的总和,并将该值输入到 U 列的最后一个单元格中。以下工作但我希望脚本从 5 列中的每一列中获取最后一个带有值的单元格。
function myFunction() {
var sheetname = "SHEET1";
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetname);
var num1 = sheet.getRange("F2710").getValue();
var num2 = sheet.getRange("N2710").getValue();
var num3 = sheet.getRange("R2710").getValue();
var num4 = sheet.getRange("S2710").getValue();
var num5 = sheet.getRange("T2710").getValue();
sheet.getRange("U2710").setValue(num1+num2+num3+num4+num5);
}
感谢您的时间和帮助!
解决方案
底部总和
您必须提供工作表名称和 sumrow,然后提供 rum getSumNow()。
sumrow 是 reduce 函数中初始值对象的属性之一。
如果您希望在其他地方显示总和,可以使用以下方法:obj.getSum();
function getSumNow() {
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('Sheet1');
var cols=[6,14,18,19,20];
var obj=cols.reduce(function(a,c,i){
a.sum+=sh.getRange(getLastRowInCol(c,sh,ss),c).getValue();
return a;
},{sumcol:21,sumrow:21,sum:0,getSum:function(){sh.getRange(this.sumrow,this.sumcol).setValue(this.sum);}}).getSum();
}
上面的函数中使用了下面的函数,所以必须提供它。
function getLastRowInCol(col,sh,ss){
var ss=ss||SpreadsheetApp.getActive();
var sh=sh||ss.getActiveSheet();
var col=col||sh.getActiveCell().getColumn();
const rcA=sh.getRange(1,col,sh.getLastRow(),1).getValues().reverse()
let s=0;
for(let i=0;i<rcA.length;i++) {
if(rcA[i][0].toString().length==0) {
s++;
}else{
break;
}
}
return rcA.length-s;
}
看来这是您更喜欢的:
function getSumNow() {
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('Sheet2');
var cols=[6,14,18,19,20];
var obj=cols.reduce(function(a,c,i){
a.sum+=sh.getRange(getLastRowInCol(c,sh,ss),c).getValue();
return a;
},{sumcol:21,sumrow:getLastRowInCol(this.sumcol,sh,ss)+1,sum:0,getSum:function(){sh.getRange(this.sumrow,this.sumcol).setValue(this.sum);}}).getSum();
}
推荐阅读
- vue.js - Vue SVG/HTML 属性插值
- node.js - 使用 Web Pack 开发服务器忽略在 React js 中观看公共文件夹
- reactjs - 从 facebook 应用程序打开网站后 react-facebook-login 不起作用
- google-data-studio - 有没有办法显示 Data Studio 报表中的数据上次刷新的时间?
- r - 优化问题 | 求解具有两个条件的 4 个参数的方程
- flutter - 我们可以在flutter中提供URL而不是FlareActor中的资产吗?
- kendo-ui - .net Core 3.1 的剑道
- java - 使用流从文件中解析字符串
- c - 跨平台网络接口枚举
- postgresql - 如何将现有列转换为允许空值的外键 - PostgreSQL