Можно ли определить, является ли число в Google Таблицах рекурсивным? - PullRequest
1 голос
/ 28 мая 2020

Итак, я бы хотел, чтобы 1/3 (что равняется 0.33333 повторяющемуся) возвращало истину и 1/8 (что равно 0.125 неповторяющееся) было ложным.

Что-то вроде =ISRECURRING(A1) который возвращает логическое значение.

Причина в том, что я хочу выделить ячейки, к которым было применено округление.

Ответы [ 2 ]

1 голос
/ 28 мая 2020

Вы можете создать функцию JavaScript, чтобы проверить это и использовать ее в своей таблице в качестве скрипта приложений пользовательской функции . Для этого выполните следующие действия:

  • В своей электронной таблице выберите Инструменты> Редактор сценариев , чтобы открыть сценарий, привязанный к вашему файлу.
  • Скопируйте эту функцию в редакторе скриптов и сохраните проект (кредиты для Larry Battle , чей ответ здесь эта функция основана на):
function ISRECURRING(num) {
  num = (num || "").toString().replace(/\d$/, '');
  var RE_PatternInRepeatDec = /(?:[^\.]+\.\d*)(\d{2,})+(?:\1)$/;
  return RE_PatternInRepeatDec.exec(num) ? true : false;
};
  • Теперь, если вы go вернетесь к своей электронной таблице, вы можете использовать эту функцию, как если бы вы использовали формулу обычных листов. Вам просто нужно указать соответствующий диапазон в качестве аргумента, как вы можете видеть здесь:

enter image description here

Примечание:

  • Как @Ron Rosenfeld отметил в комментарии ниже, эта функция не будет работать в течение очень долгого времени (например, 1/97). Это связано с ограничением точности, которое имеют электронные таблицы (насколько мне известно, 15 цифр). Из-за этого повторение длиннее 7 цифр не будет обнаружено.

Ссылка:

0 голосов
/ 02 июня 2020

Кредит для @ Ron Rosenfeld .

=A1-ROUND(A1,14) <> 0 отлично работает. Где A1 - это рассматриваемое число.

Я не могу гарантировать, что каждое округленное число работает, но похоже, что оно работает во всех примерах, которые я пробовал.

...