У меня есть диапазон данных, первым столбцом которого являются даты, а второй столбец - числовые значения. Есть несколько строк, в которых значение второго столбца пустое, и я не хочу, чтобы они учитывались.Среднее число в столбце Если условие в другой колонке удовлетворено
Я пытаюсь найти среднее значение для значений второго столбца, если они удовлетворяют критериям пребывания в течение 3 месяцев назад с сегодняшнего дня (пустые значения не должны учитываться).
Но я застреваю, поскольку я даже не могу получить полное правильное. И я не знаю, как продолжить дальше, чтобы получить среднее.
Код, похоже, дает мне прилагаемые строки вместо математического суммирования чисел.
Помогите пожалуйста?
Заранее спасибо.
function average() {
// open spreadsheet
var spreadsheet = SpreadsheetApp.openById("spreadsheetID");
// set the named sheet as active
var sheet = SpreadsheetApp.setActiveSheet(spreadsheet.getSheetByName("SheetName"));
// figure out what the last row is
var lastRow = spreadsheet.getSheetByName("Form responses 1").getLastRow();
// the rows are indexed starting at 1, and the first row is the headers, so start with row 2
var startRow = 2;
// get the data range
var responsesValues = spreadsheet.getSheetByName("Form responses 1").getRange("A1:Q" + lastRow).getValues();
// define the dates
var timeToday = new Date().getTime();
var dateToday = new Date().getDate();
var date = new Date();
var threeMonthsAgo = new Date(date.getFullYear(), date.getMonth() - 3, 0);
// grab column 1 (date of entry column) (second variable in getRange function below)
var dataRange = sheet.getRange(2,1,lastRow-startRow+1,1);
var numRows = dataRange.getNumRows();
var dateOfEntryValues = dataRange.getValues();
// grab column 2 (values to be averaged)
range = sheet.getRange(2, 2, lastRow-startRow+1, 1);
var Values = range.getValues();
var warning_count = 0;
var sumValues = 0;
// Loop over the values
for (var i = 0; i <= numRows - 1; i++) {
var dateOfEntry = dateOfEntryValues[i][0];
if(dateOfEntry > threeMonthsAgo && dateOfEntry !== "") {
// if it's within 3 months ago, add the values.
sumValues += Values[i][0];
warning_count++;
}
}
Но я хотел бы сделать это со сценарием, а не работать с электронной таблицей. –
Вы можете использовать это в ячейке и получить значение оттуда в скрипте. – Greaka
попробуйте вместо 'if (dateOfEntry> threeMonthsAgo && dateOfEntry! ==" ") {' this 'if (dateOfEntry> threeMonthsAgo && dateOfEntry! =" ") {' DateOfEntry может отличаться от строки. – Greaka