Countif Indirect Google Sheets - PullRequest
       6

Countif Indirect Google Sheets

0 голосов
/ 10 октября 2018

Я пытаюсь написать формулу, которая подсчитывает, сколько раз число 1 появляется в ячейке F1 всех моих листов.Мои листы имеют разные названия (18-0100, 18-0101, 18-0102 ...).Я попробовал следующую формулу:

= COUNTIF (INDIRECT ("'" & "'! F1"), "= 1")

Действует непредсказуемо.Он будет возвращать только 1, даже если он должен быть больше 1. А когда я пытаюсь начать пытаться считать 2 вместо 1, он возвращает 0, а не правильное число.

Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

Вы также можете воспользоваться Скриптом Служб Google , чтобы выполнить эту задачу.

Из своей таблицы перейдите на Tools > Script Editor.Добавьте код ниже, затем сохраните.Сохраненная там функция будет доступна всем другим приложениям Google, включая вашу электронную таблицу.Затем вы можете использовать имя функции в своей электронной таблице, как если бы вы использовали любую другую формулу.

function OccurrencesInSheetNames(str) {
  var c = 0;
  var regExp = new RegExp('[' + str + ']', 'g');
  var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
  var sheetnames = [];
  for (var i=0; i<sheets.length; i++) {
    sheetnames.push([sheets[i].getName()]);
  }
  for (var i=0; i<sheetnames.length; i++) {
    var name = sheetnames[i].toString();
    var count = (name.match(regExp) || []).length;
    c += count;
  }
  return c;
}

Теперь в вашей ячейке F1 поместите следующую формулу:

=OccurrencesInSheetNames(TEXT(1,0))

Вы также можете заменить 1 в приведенной выше формуле ссылкой на ячейку, если это лучше работает для ваших нужд.(Например, =OccurrencesInSheetNames(TEXT(C5,0)), если вы хотите найти в именах листов целое число, найденное в ячейке C5.)

Вот демонстрационная таблица *1020*, которую вы можете попробовать.

0 голосов
/ 10 октября 2018

Ваша формула учитывает только текущий лист.

Чтобы получить их все, вам нужно ввести все имена листов:

enter image description here

Формула для каждого листа:

= (INDIRECT ("'" & имя_листа & "'! F1") = 1) * 1

...