0

我对以下内容感到困惑。

我有一个谷歌电子表格上的数据,我将其放入一个数组中。我正在对数据进行一些修改,然后将其放回电子表格中。我的数字在电子表格上的格式是这样的:00.00% 当它们进入数组时,它们的格式是这样的 0.0,当我把它们放回电子表格中以 00.00% 格式时,它们被除以 100。所以开始了因为当我放回数据时,20.00% 变为 0.20%。

所以,我想在将所有数值放回工作表之前将它们乘以 100,这似乎应该是一个不必要的步骤。

我的问题是我是否可以对如何处理数组中的数据做一些不同的事情,或者将每个值乘以 100 是我唯一的选择?

4

2 回答 2

3

这是一个众所周知的错误:

问题 472:对于百分比格式的单元格,setValue(s) 失败。

访问并star它,也许它会得到更多关注。

如果您从百分比格式的单元格中读取和写入值,则必须重新计算百分比值。

此函数使用范围的格式值将*= 100操作应用于任何百分比的单元格:

/**
 * Adjusts the values for elements in values array if the
 * corresponding format element is a percentage.
 * Value array is changed in place, as well as returned.
 */
function percentAdjust(values,formats) {
  for (var row = 0; row < values.length; row++) {
    for (var col = 0; col < values[0].length; col++) {
      if (formats[row][col].indexOf('%') !== -1) {
        // Adjust any percent formatted values
        values[row][col] *= 100;
      }
    }
  }
  return( values );
};

function test () {
  var sheet = SpreadsheetApp.getActiveSheet();
  var rows = sheet.getDataRange();
  var values = rows.getValues();
  var formats = rows.getNumberFormats();

  rows.setValues(percentAdjust(values,formats));
}
于 2013-05-05T15:37:12.977 回答
0

或者对于值低于 200%,检查值是否低于 2,如果是,则将其转换为百分比...

var inputValue = row[0];
if (inputValue < 2) {
    inputValue = (inputValue*100 + "%")
}
于 2021-09-20T09:50:09.083 回答