如何计算 Google 张中识别号码的频率
How to count frequency of an Identifying number in Google sheets
我们正在请求帮助创建一个脚本来计算每个月处理识别号码的交易频率。
在(12 月)sheet,在 (A) 列中,我们通过标识号(例如...888)列出了当月请求的所有交易。我们希望脚本识别当前月份 sheet(例如 ..December),计算 (888) 在 A 列中出现的频率,并在 (Data) sheet 下生成该数字当前月份列(例如 ..December),并按行号与标识号 (888) 和名称 (John Doe) 对齐。
我们已经创建并尝试了一个公式 (=COUNTIF('December 2020'!A2:A600, 888)
,但这很耗时,因为我们有超过 300 个识别号码。请参考随附的屏幕截图以便更好地理解。预先感谢您,我们期待您的回复。
enter image description here
enter image description here
function countOccurencesInColumn1() {
const months=['January','February','March','April','May','June','July','August','September','October','November','December'];
const m=new Date().getMonth();
const y=new Date().getFullYear();
const name=Utilities.formatString('%s %s',months[m],y);
const ss=SpreadsheetApp.getActive();
const sh=ss.getSheetByName(name);
const sr=2;//start row
const rg=sh.getRange(sr,1,sh.getLastRow()-sr+1,1);
const v=rg.getValues().flat();
let obj={pA:[]};
v.forEach(function(p,i){
if(!obj.hasOwnProperty(p)) {
obj[p]=1;
obj.pA.push(p);
}else{
obj[p]+=1;
}
});
let html='<style>tr,td{border:1px solid black;}</style><table><tr><th>String</th><th>Count</th></tr>';
obj.pA.forEach(function(p){
html+=Utilities.formatString('<tr><td>%s</td><td>%s</td></tr>',p,obj[p]);
});
html+='</table>';
SpreadsheetApp.getUi().showModelessDialog(HtmlService.createHtmlOutput(html), "Occurrences");
//Loading the sheet
const dsh=ss.getSheetByName('DataSheetName');//don't know name
const hA=dsh.getRange(1,1,1,dsh.getLastColumn()).getValues().flat();//data sheet header array
const col={};
hA.forEach((h,i)=>{col[h]=i+1;});//converst column names to column numbers
const pnames=dsh.getRange(2,1,sh.getLastRow()-1,1).getValues().flat();
const values=dsh.getRange(2,col[name],dsh.getLastRow()-1,1).getValues();
pnames.forEach(function(n,i){
if(obj.hasOwnProperty(n)) {
values[i][0]=obj[n];
}else{
values[i][0]='';
}
});
dsh.getRange(2,col[name],values.length,1).setValues(values);
}
我们正在请求帮助创建一个脚本来计算每个月处理识别号码的交易频率。
在(12 月)sheet,在 (A) 列中,我们通过标识号(例如...888)列出了当月请求的所有交易。我们希望脚本识别当前月份 sheet(例如 ..December),计算 (888) 在 A 列中出现的频率,并在 (Data) sheet 下生成该数字当前月份列(例如 ..December),并按行号与标识号 (888) 和名称 (John Doe) 对齐。
我们已经创建并尝试了一个公式 (=COUNTIF('December 2020'!A2:A600, 888)
,但这很耗时,因为我们有超过 300 个识别号码。请参考随附的屏幕截图以便更好地理解。预先感谢您,我们期待您的回复。
enter image description here enter image description here
function countOccurencesInColumn1() {
const months=['January','February','March','April','May','June','July','August','September','October','November','December'];
const m=new Date().getMonth();
const y=new Date().getFullYear();
const name=Utilities.formatString('%s %s',months[m],y);
const ss=SpreadsheetApp.getActive();
const sh=ss.getSheetByName(name);
const sr=2;//start row
const rg=sh.getRange(sr,1,sh.getLastRow()-sr+1,1);
const v=rg.getValues().flat();
let obj={pA:[]};
v.forEach(function(p,i){
if(!obj.hasOwnProperty(p)) {
obj[p]=1;
obj.pA.push(p);
}else{
obj[p]+=1;
}
});
let html='<style>tr,td{border:1px solid black;}</style><table><tr><th>String</th><th>Count</th></tr>';
obj.pA.forEach(function(p){
html+=Utilities.formatString('<tr><td>%s</td><td>%s</td></tr>',p,obj[p]);
});
html+='</table>';
SpreadsheetApp.getUi().showModelessDialog(HtmlService.createHtmlOutput(html), "Occurrences");
//Loading the sheet
const dsh=ss.getSheetByName('DataSheetName');//don't know name
const hA=dsh.getRange(1,1,1,dsh.getLastColumn()).getValues().flat();//data sheet header array
const col={};
hA.forEach((h,i)=>{col[h]=i+1;});//converst column names to column numbers
const pnames=dsh.getRange(2,1,sh.getLastRow()-1,1).getValues().flat();
const values=dsh.getRange(2,col[name],dsh.getLastRow()-1,1).getValues();
pnames.forEach(function(n,i){
if(obj.hasOwnProperty(n)) {
values[i][0]=obj[n];
}else{
values[i][0]='';
}
});
dsh.getRange(2,col[name],values.length,1).setValues(values);
}