В Google Таблицах программно применяется числовой формат пользовательских символов валюты

Я хотел бы программно применить пользовательский числовой формат, чтобы я мог использовать пользовательские символы валюты в своих ячейках (например, для криптовалюты) и сохранять их в виде чисел, чтобы я мог выполнять с ними математические вычисления или отображать значения.

Я уже рассмотрел следующие варианты:

  • Если я использую функцию электронной таблицы «СЦЕПИТЬ», я получаю строку и не могу выполнять математические вычисления или диаграмму с окончательным значением.

  • Функция электронной таблицы TEXT () может получить формат чисел для отображения, как я хочу, но не все пользовательские символы валюты "работают" - например, следующее превращает значение в текстовую строку, и я не могу выполнять с ней математические вычисления / диаграммы.

Ex: =TEXT(SUM(C5:C7),"Ƀ#,##0.00000000")

ссылка на TEXT (): https://support.google.com/docs/answer/3094139?hl=en

  • Если я создаю настраиваемую функцию, скажем format(cell), и использую JS для добавления любых текстовых строк к значению, это больше не числовой тип.

Ex: function GBP(amt) { return '£' + parseFloat(amt).toFixed(2)); }

Это тоже не сработает, поскольку результирующая строка не является числом:

function BTC(amt) { return parseFloat('Ƀ' + parseFloat(amt).toFixed(2)); }

  • setNumberFormat(format) нельзя использовать в пользовательской функции, вызываемой с помощью формул электронной таблицы.

  • Копирование другого форматирования ячеек? Я также рассматриваю это как обходной путь, но он выглядит неэффективным, если мне нужно копировать и вставлять форматирование для каждой ячейки, которой я хочу правильное форматирование: Применение автоматического форматирования чисел

  • Копирование значений в другой столбец только для условного форматирования, а диапазон исходных чисел используется только для математики / построения диаграмм. Это скорее обходной путь, а не чистое решение.

Короче говоря, я просто хочу добавить собственные символы валюты к своим числам и по-прежнему иметь возможность делать с ними математические вычисления и графики. Кто-нибудь знает рабочий, прямой способ сделать это с помощью скриптов Google Apps или функций / меню электронных таблиц?


person Denis Lam    schedule 16.11.2017    source источник
comment
Почему бы просто не форматировать ›Число› Другие форматы ›Пользовательский формат чисел и предоставить [$Ƀ]#,##0.00000000?   -  person Robin Gertenbach    schedule 16.11.2017
comment
query может выполнять настраиваемое форматирование, не превращая его в текст. Вы можете попробовать использовать запрос вместо text() в API листов.   -  person TheMaster    schedule 16.11.2017
comment
@RobinGertenbach Причина, по которой я не могу этого сделать, заключается в том, что значения ячеек являются динамическими - значения определяются раскрывающимся списком проверки данных. Поэтому разные значения требуют разных форматов. Ваш метод придаст этой ячейке формат, который будет применяться ко всем условиям.   -  person Denis Lam    schedule 16.11.2017


Ответы (1)


Чтобы программно применить денежный формат к одному числу и сохранить его как число для выполнения с ним арифметических операций, используйте setNumberFormat (string).

ПРИМЕЧАНИЯ:

  • Пользовательскую функцию нельзя использовать для применения числового формата, поскольку пользовательские функции не могут изменять формат ячейки.
  • Условное форматирование не применяет числовое форматирование
  • Документация Google не включает валютные форматы. Их можно было получить из пользовательского интерфейса Google Таблиц. Сначала установите желаемый формат валюты для ячейки, нажав «Формат»> «Дополнительные форматы»> «Дополнительные валюты», затем нажмите «Формат»> «Дополнительные форматы»> «Пользовательские числовые форматы» ... и скопируйте формат из текстового поля.

Пример:

SetNumberFormat - это частично реализованная функция скрипта Google Apps, которая в настоящее время применяет формат валюты фунт стерлингов ([$£-809]#,##0.00) или формат по умолчанию (#,##0.00). Тестовая функция используется для ее вызова, присваивая параметру формата «фунт стерлингов».

function test(){
  setNumberFormat('Pound sterling');
}

function setNumberFormat(format) {
  var range = SpreadsheetApp.getActiveRange();
  var numberFormat = '';
  try {
    switch (format){
      case 'Pound sterling':
        numberFormat = '[$£-809]#,##0.00';
        break;
      default:
        numberFormat = '#,##0.00';
        break;
    }
    range.setNumberFormat(numberFormat);
  } catch (e){
    throw new Error('There was an error: ' + e);
  }
}

Связанные вопросы и ответы

использованная литература

person Rubén    schedule 17.11.2017