- Вы хотите рассчитать количество ячеек, которые имеют формулы
=HYPERLINK()
и значение больше 0
.
- Это выполняется для одной строки, а также есть ячейки без гиперссылки.
- Вы хотите добиться этого с помощью пользовательской функции.
- В качестве примера, в вашей общей электронной таблице нужно указать число
2
.
Я мог бы понять вашу цель, как указано выше. Если мое понимание верно, как насчет этой модификации? Пожалуйста, подумайте об этом как об одном из нескольких ответов.
Ваш текущий скрипт:
Из общей таблицы я подтвердил, что ваш текущий сценарий выглядит следующим образом.
function countLinks(rangeNotation, range) {
var formulas = SpreadsheetApp.getActiveSheet().getRange(rangeNotation).getFormulas();
return formulas.reduce(function(acc, row) {
return acc + row.reduce(function(acc, formula) {
return acc + (/^=HYPERLINK/i.test(formula) ? 1 : 0);
}, 0);
}, 0);
}
Очки модификации:
- В вашем текущем скрипте значения не извлекаются.
- В этой модификации формулы и значения извлекаются из ячеек.
- В вашем случае формулы извлекаются из одной строки. Таким образом, один
reduce()
может быть удален.
range
не используется.
Когда указанные пункты отражаются в вашем текущем сценарии, он становится следующим:
Модифицированный скрипт:
function countLinks(rangeNotation) {
var sheet = SpreadsheetApp.getActiveSheet();
var formulas = sheet.getRange(rangeNotation).getFormulas()[0];
var values = sheet.getRange(rangeNotation).getValues()[0];
return formulas.reduce(function(acc, formula, i) {
return acc += (/^=HYPERLINK/i.test(formula) && values[i] > 0 ? 1 : 0);
}, 0);
}
Использование:
Когда вы используете эту функцию в качестве пользовательской функции, например, добавьте следующую пользовательскую функцию в ячейку "AO3" в вашей общей электронной таблице.
=countlinks("A3:AN3")
Результат:
Когда вышеуказанный скрипт используется для вашей общей электронной таблицы, получается следующий результат.
Ссылки