我正在尝试使用数组将以下公式扩展到一列中,据我所知,它不适用于countif。我需要此作为列中的除数,让分子成功地向下扩展到该列。这是在每行中都能正常运行的函数:
=arrayformula(countifs(unique(if('All Data'!$B$2:$B=$A2,'All Data'!$A$2:$A,)),">="&edate(F$2,0),unique(if('All Data'!$B$2:$B=$A2,'All Data'!$A$2:$A,)),"<="&edate(F$2,1)))
我正在努力避免在整个工作表中复制公式,因为它相当大,并且希望它作为一个数组工作,在这里我可以得到第2行中的a2,第3行中的a3,第4行中的a4的计数等等,所以我尝试了这个公式,该公式不起作用:
=arrayformula(countifs(unique(if('All Data'!$B$2:$B=$A2:$A,'All Data'!$A$2:$A,)),">="&edate(F$2,0),unique(if('All Data'!$B$2:$B=$A2:$A,'All Data'!$A$2:$A,)),"<="&edate(F$2,1)))
是否可以使用变通办法为我扩展此功能?
谢谢!
您可以使用Apps脚本custom function完成此操作。为此,请按照下列步骤操作:
function AVERAGE_STUDENTS(classes, monthIndex) {
const sheet = SpreadsheetApp.getActive().getSheetByName("All Data");
const data = sheet.getRange(2, 1, sheet.getLastRow() - 1, sheet.getLastColumn()).getValues();
const monthRows = data.filter(row => row[0].getMonth() + 1 == monthIndex);
return classes.map(classy => {
const classRows = monthRows.filter(row => row[1] == classy[0]);
const totalStudents = classRows.length;
const uniqueDates = new Set(classRows.map(element => JSON.stringify([element[0], element[1]]))).size;
return totalStudents / uniqueDates;
});
}
A3:A18
)和月份索引(对于4月,则为4
),如下所示:C1
处调用该函数并自动填充所有月份。