Function 对Google工作表工作簿中所选工作表的单元格求和
我创建了一个用于跟踪门店间商品转移的工作簿。每个月的每一天都有页面。我想做一个总计页面,在一张单独的表格上统计所有的转账。(工作簿中还有其他我不想添加到总数中的页面。) 我正在尝试制作一个脚本,它将获取第1页到第31页上单元格A1的值,并将总和放在第32页的单元格A1中,同样地,对于每个其他单元格 现在我正在使用一个名为“Custom Count and Sum”的google sheets附加组件,它可以让我像我想要的那样将所有页面加在一起,但是页面名称是作为字符串传递的,所以你不能在单元格之间复制和粘贴公式。我找到了一个解决方法,使用address(row(),column(),4,true)引用单元格位置,这样我就不必手动键入其中的每个单元格。现在,我正试图使其在不必重新输入公式的情况下更新值。我不能使用我安装的附加函数来实现这一点,因为据我所知,我需要传递另一个参数,但我不能在附加公式中实现这一点。我正在尝试写我自己的脚本,我已经尝试使用下面问题中的信息,但我没有任何成功Function 对Google工作表工作簿中所选工作表的单元格求和,function,google-apps-script,google-sheets,Function,Google Apps Script,Google Sheets,我创建了一个用于跟踪门店间商品转移的工作簿。每个月的每一天都有页面。我想做一个总计页面,在一张单独的表格上统计所有的转账。(工作簿中还有其他我不想添加到总数中的页面。) 我正在尝试制作一个脚本,它将获取第1页到第31页上单元格A1的值,并将总和放在第32页的单元格A1中,同样地,对于每个其他单元格 现在我正在使用一个名为“Custom Count and Sum”的google sheets附加组件,它可以让我像我想要的那样将所有页面加在一起,但是页面名称是作为字符串传递的,所以你不能在单元格之
任何帮助都将不胜感激通常,最好在一个选项卡中收集每天、每个月和所有年份的所有数据。每一项在它自己的行上都有一个日期,就像一个数据库
与将不同选项卡中的数据聚合到一个选项卡上相比,将一个选项卡上的所有数据分解为不同的选项卡进行汇总/计数/分析要容易得多。让我们看看此解决方法是否适用于您 在这种情况下,如果希望函数获取所有单元格和总和,则应尝试匹配要从中获取值的表。在您的情况下,您可以查找属于数字的所有值
/**
* Sum all the values in the cells/range of all the sheets that match the
* regular expressión `(\d)+`
*
* @param {string} A1Notation - Range in A1Notation that would be sum for all the cells
*/
function SUM_SHEETS(A1Notation){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheets = ss.getSheets();
var regEx = /\b\d+\b/; // The regEx that will match the sheets
var result = 0;
for(var i=0; i < sheets.length; i++){
var sheet = sheets[i];
// Check that your sheet is matching your regular Expression
if( regEx.test(sheet.getName())){
var range = sheet.getRange(A1Notation);
var values = range.getValues();
// Iterate through all the range from all the current sheet
for(var j=0; j < values.length; j++){
for(var k=0; k < values[j].length; k++){
var value = values[j][k];
// Only sum when the cell is a number
if (typeof value == "number"){
result += value;
}
}
}
}
}
return result;
}
/**
*求和所有图纸的单元格/范围中与该值匹配的所有值
*正则表达式(\d)+`
*
*@param{string}A1Notation-A1Notation中所有单元格的总和范围
*/
函数和表(A1符号){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sheets=ss.getSheets();
var regEx=/\b\d+\b//;//将与工作表匹配的正则表达式
var结果=0;
对于(变量i=0;i
考虑到输入参数是一个表示范围的字符串,因此您可以遍历工作表
还要注意工作表,在这个解决方案中,我使用的是一个regExp,它将所有数值相加(仅为数字)。当使用
=sum_sheets(A1Annotation)
时,我所做的工作(对于我需要的13行),是键入L1,L2,。。。,L13
在A列中,它将引用我希望使用此函数求和的工作表中的单元格
在公式列(B)中,我将SUM_SHEETS()
中的L1
部分替换为单元格A1
(因为我刚刚在单元格A13
中键入了L1
。例如: |A列 | B栏| |----------------------|---------------------| |L1| =汇总表(A13)| |L2| =汇总表(A14)|
| ... | |
|L13| =汇总表(A25)| 而不是: |A列| |--------------------| |=汇总表(“L1”)|
|=汇总表(“L2”)| | ... | |=汇总表(“L13”)| 最后,为了在需要时刷新,我创建了一个按钮和一个宏来删除单元格中的数据
A13:A25
,然后将它们放回原来的位置
函数刷新\u摘要(){
var电子表格=SpreadsheetApp.getActive();
电子表格.getRange('A13:A25').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly:true,skipFilteredRows:true});
电子表格.getRange('A13').activate();
电子表格.getCurrentCell().setValue('L1');
spreadsheet.getRange('A14').activate();
电子表格.getCurrentCell().setValue('L2');
电子表格.getRange('A15').activate();
电子表格.getCurrentCell().setValue('L3');
电子表格.getRange('A16').activate();
电子表格.getCurrentCell().setValue('L4');
spreadsheet.getRange('A17').activate();
电子表格.getCurrentCell().setValue('L5');
电子表格.getRange('A18').activate();
电子表格.getCurrentCell().setValue('L6');
spreadsheet.getRange('A19').activate();
电子表格.getCurrentCell().setValue('L7');
电子表格.getRange('A20').activate();
电子表格.getCurrentCell().setValue('L8');
电子表格.getRange('A21').activate();
电子表格.getCurrentCell().setValue('L9');
spreadsheet.getRange('A22').activate();
电子表格.getCurrentCell().setValue('L10');
电子表格.getRange('A23').activate();
电子表格.getCurrentCell().setValue('L11');
电子表格.getRange('A24').activate();
电子表格.getCurrentCell().setValue('L12');
电子表格.getRange('A25').activate();
电子表格.getCurrentCell().setValue('L13');
};你能分享你的工作表吗?你的单子上只有数字吗?你是否愿意使用应用程序脚本解决方案我愿意使用脚本,我已经在工作簿中制作了一些脚本。我为我的业余脚本事先道歉