Как получить значение выбранных ячеек, которые вы передаете через аргументы в виде чисел?

#google-apps-script #google-sheets

#google-apps-script #google-sheets

Вопрос:

При выполнении этой функции Add Total, которую я сделал, когда она добавляет выбранные ячейки, она говорит, что результатом не было числа, но выбранные ячейки имеют только числа.

 function ADDTOTAL(ref1, ref2) {
  var Number1 = ref1;
  var Number2 = ref2;
  var Number = Math.floor(Number1 Number2); 
  return Number;
} 
  

Он возвращает #NUM! и говорит, что результат не был числом, я новичок в этом и понятия не имею, что это такое.

Комментарии:

1. Это работает для меня.

Ответ №1:

Проблема:

Мне удалось воспроизвести вашу проблему.

Вы либо передаете строки вместо ссылок на ячейки:

пример

или значения ячеек, которые вы используете в качестве ссылок, являются строками. Например "3 " , это строка, потому что она имеет дополнительный пробел, но также 3 отформатирована как строка:

пример2

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

Чтобы убедиться, что значение ячейки является числом, выполните =ISNUMBER(A1) . Если это возвращает TRUE , это означает, что значение A1 является числом. Чтобы преобразовать номер строки в фактическое число, выберите ячейки и перейдите Format => Number => Number в верхнее меню.

Имейте в виду, что если вы добавите две строки вместе, например "3" , и "1" вы не получите 4 , но 31 . Я намеренно изменил формат на обычный текст. В этом случае снова =isnumber(A1) будет FALSE :

пример3

Решения:

Предполагая, что ячейки являются фактическими числами, у вас есть следующие варианты:

  • Вы передаете ссылки на ячейки:

решение 1

  • Вы передаете числовые аргументы:

введите описание изображения здесь

  • И последнее, но не менее важное: вы можете использовать parseFloat для преобразования входных аргументов в числа:

     function ADDTOTAL(ref1, ref2) {
    var Number1 = parseFloat(ref1);
    var Number2 = parseFloat(ref2);
    var Number = Math.floor(Number1 Number2); 
    return Number;
    }
      

Комментарии:

1. Вы написали parseInt вместо parseFloat в фрагменте кода. Это опечатка?

2. Он по-прежнему возвращает #NUM! когда я пробую решения и после того, как я отформатировал его как число

3. @Blade поделитесь копией своего листа, но сначала удалите всю конфиденциальную информацию..

4. docs.google.com/spreadsheets/d/…

5. @Blade сделайте лист доступным для всех, создав общедоступную ссылку. Теперь у меня нет разрешения на его просмотр.