Google Sheets: подсчитать количество HYPERLINKS, где значение> 0 - PullRequest
1 голос
/ 28 июня 2019

У меня есть ряд ячеек в Google Sheets Некоторые из этих ячеек содержат значения (числа), некоторые с, а другие без HYPERLINKS Мне нужно посчитать количество гиперссылок для этого диапазона ячеек, если значение> 0

Эта функция работает нормально, но не содержит значений ячеек. Подсчет гиперссылок по формуле Google Sheets

1 Ответ

1 голос
/ 02 июля 2019
  • Вы хотите рассчитать количество ячеек, которые имеют формулы =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")

Результат:

Когда вышеуказанный скрипт используется для вашей общей электронной таблицы, получается следующий результат.

enter image description here

Ссылки

...