有 2 列。第一個采用日期格式 DD.MM.YYYY 的值,第二個采用整數值。如何根據匹配第一列月份的條件生成第二列數字的總和?對于 ex 我有趣的是匹配 MONTH() = 11 的值的總和?

uj5u.com熱心網友回復:
每月總和
function myfunk() {
const ss = SpreadsheetApp.getActive();
const sh = ss.getSheetByName('Sheet0');
const vs = sh.getRange(2,1,sh.getLastRow() - 1, 2).getValues();
let sums = {pA:[]};
vs.forEach((r => {
let p = r[0].split('.').filter((e,i) => i > 0).reduce((a,c,idx) => {
if(idx > 0) a = '.';
a = c;
return a;
});
if(!sums.hasOwnProperty(p)) {
sums[p]= r[1];
sums.pA.push(p);
} else {
sums[p] = r[1]
}
}));
let html = '<style> td,th{border: 1px solid black;}</style><table><tr><th>Month</th><th>Sum</th></tr>';
sums.pA.forEach(p => {
html = `<tr><td>${p}</td><td>${sums[p]}</td></tr>`
});
SpreadsheetApp.getUi().showModelessDialog(HtmlService.createHtmlOutput(html),'Monthly Sums')
}
資料:

總和對話框:

向 osh 添加每月總和
function myfunk() {
const ss = SpreadsheetApp.getActive();
const sh = ss.getSheetByName('Sheet0');
const osh = ss.getSheetByName('Sheet1');
osh.clear();
const vs = sh.getRange(2,1,sh.getLastRow() - 1, 2).getValues();
let sums = {pA:[]};
vs.forEach((r => {
let p = r[0].split('.').filter((e,i) => i > 0).reduce((a,c,idx) => {
if(idx > 0) a = '.';
a = c;
return a;
});
if(!sums.hasOwnProperty(p)) {
sums[p]= r[1];
sums.pA.push(p);
} else {
sums[p] = r[1]
}
}));
let html = '<style> td,th{border: 1px solid black;}</style><table><tr><th>Month</th><th>Sum</th></tr>';
let arr = [['Month','Sums']];
sums.pA.forEach(p => {
html = `<tr><td>${p}</td><td>${sums[p]}</td></tr>`
arr.push([`${p}`,`${sums[p]}`])
});
SpreadsheetApp.getUi().showModelessDialog(HtmlService.createHtmlOutput(html),'Monthly Sums');
osh.getRange(1,1,arr.length,arr[0].length).setValues(arr);
}
uj5u.com熱心網友回復:
假設您的原始資料位于名為 的作業表中Sheet1,您在 A1 和 B1 中有標題,并且您發布的資料集位于 A2:B14 中,而單元格 A15:B 中沒有寫入任何內容。在新作業表中,在單元格 A1 中輸入此公式:
=ArrayFormula(QUERY({DATE(YEAR(Sheet1!A2:A),MONTH(Sheet1!A2:A),1),B2:B},"Select Col1, SUM(Col2) WHERE Col2 Is Not Null GROUP BY Col1 LABEL Col1 'MONTH', SUM(Col2) 'TOTAL' FORMAT Col1 'mmm yyyy'"))
這QUERY將產生兩個標題(如果您愿意,您可以在該LABEL部分中更改QUERY)以及資料集中所有月份/年份的所有結果。
該QUERY行為的虛擬陣列,首先將在Sheet1 A2所有日期上:阿成新的DATE基礎上,月和年從原來的日期,秒,但都落在第一個月。這允許將SUMs 分組到QUERY. 然后QUERY'sFORMAT部分轉換這些標準化日期以僅顯示月份和年份部分。
調整作業表名稱和參考范圍以適合實際資料的作業表名稱和資料范圍。
注意(在了解到 OP 的語言環境是俄羅斯之后):
此版本適用于您的語言環境...
=ArrayFormula(QUERY({DATE(YEAR(Sheet1!A2:A); MONTH(Sheet1!A2:A);1) \ Sheet1!B2:B}; "Select Col1, SUM(Col2) WHERE Col2 Is Not Null GROUP BY Col1 LABEL Col1 'MONTH', SUM(Col2) 'TOTAL' FORMAT Col1 'mmm yyyy'"))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/402314.html
標籤:
