Как показать левые нули в ячейке? '001 +1 =' 002 через приложение Google Script - PullRequest
1 голос
/ 21 октября 2019

Мне нужно сделать в коде что-нибудь столь же простое, как это в VBA, это будет

n="'001"

n= "'" +right("000" + str((val( rigth(n,3))+1)),3)

Конечный результат n = "'002"

Итак, мне нужно добавить 1 встолбец, в котором предыдущая ячейка имеет значение = "'001". Это не работает

  var n= parseInt(s.getRange(row-1,9).getValue().substring(2,3),10)+1;
  console.log("n " + n);

   s.getRange(row,9).setValue("'"+("000"+ n.toString()).substring(-4,3));      

Ответы [ 2 ]

2 голосов
/ 21 октября 2019
  • Вы хотите достичь 002, добавив 1 к 001.
    • Например, когда ячейка «I1» имеет '001, вы хотите поместить «002» в ячейку «I2».
  • Вы хотитеиспользуйте ' верхних символов.
  • Вы хотите добиться этого с помощью Google Apps Script.

Если мое понимание верно, как насчет этой модификации? Пожалуйста, подумайте об этом как об одном из нескольких ответов.

В этом измененном сценарии предполагается, что ячейка "I1" имеет '001.

Шаблон 1:

В этом шаблоне значение, полученное из ячейки «I1», преобразуется в число и добавляет 1, а затем заполнение нулями выполняется с 3 цифрами. Значение добавляется в ячейку «I2» путем добавления '.

Пример сценария:

// var row = 2; // For cell "I1"
var n = parseInt(s.getRange(row-1,9).getValue(), 10) + 1;
s.getRange(row,9).setValue("'" + ("000" + n).slice(-3));
  • Если вы не хотите отображать нольpadding Если предыдущее значение больше 1000, вы можете использовать следующий скрипт:

    s.getRange(row,9).setValue("'" + (n.toString().length <= 3 ? ("000" + n).slice(-3) : n));
    

Pattern 2:

В этом шаблоне значение извлекается изЯчейка "I1" преобразуется в число и добавляет 1. Значение помещается в ячейку "I2" путем изменения формата на 000. В этом случае в качестве числа может использоваться положенное значение.

Пример сценария:

// var row = 2; // For cell "I1"
var n = parseInt(s.getRange(row-1,9).getValue(), 10) + 1;
s.getRange(row,9).setNumberFormat("000").setValue(n);

Примечание:

  • В вашем сценарии, если row равно 1, ошибка возникает при s.getRange(row-1,9), поскольку row-1 равно 0. Пожалуйста, будьте осторожны.

Ссылки:

Если я неправильно понял ваш вопрос, и это был не тот результат, которого вы хотите, прошу прощения.

0 голосов
/ 21 октября 2019

Попробуйте:

function showLeftZeroes() {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getActiveSheet();
  var rg=sh.getRange(1,1,10,5);
  var vA=rg.getValues();
  var fA=rg.getNumberFormats();
  for(var i=0;i<vA.length;i++) {
    vA[i][0]=i+1;
    fA[i][0]="000";    
    vA[i][1]='+';
    vA[i][2]=1;
    fA[i][2]="###";
    vA[i][3]=" = ";
    vA[i][4]=vA[i][0]+vA[i][2];
    fA[i][4]="000"
  }
  rg.setNumberFormats(fA);
  rg.setValues(vA);
}

Числовые форматы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...