首页 > 解决方案 > 设置交替列数字格式

问题描述

我有一张表格,我们在 A 列第 3 行有一个产品名称。在单元格 B1 和 C1 中,我们有日期,然后是 B2 库存和 C2 价格

           26/3/21         26/3/21

Thingymabob 3 5

我想沿着 C、E、G 等列前进,直到最后一列将它们格式化为 $#.##

我找不到格式化列(索引)的方法,所以我在这里找到了一段旧代码,将索引转换为字母,然后我试图用那个字母说

"var column = sheet.getRange("C2:C")" "column.setNumberFormat("[$€]#,##0.00");"

虽然没有喜悦。这是函数,请帮忙!

function formatPriceColumns() {
 var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
 var sheet = spreadsheet.getSheetByName("PriceHistory");
 var temp = ""
 var letter = "";
 var lastCol = sheet.getLastColumn();
 var lastRow = sheet.getLastRow();

 for(i = 3; i <= lastCol; i = i + 2) { 
    temp = (i - 1) % 26;
    letter = String.fromCharCode(temp + 65) + letter;
    i = (i - temp - 1) / 26;

    var needString = "\"" + letter + "3" + ":" + letter + lastRow + "\""

    var column = sheet.getRange(needString) 
    column.setNumberFormat("[$€]#,##0.00");
  }
}

标签: google-apps-scriptformattingmultiple-columns

解决方案


好吧,有很多问题!

其中使用 i 两次是最少的。还有变量的范围,最重要的是,不传递字符串。

更正后的代码如下所示:

function formatColumns() {
 var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
 var sheet = spreadsheet.getSheetByName("PriceHistory");
 var lastCol = sheet.getLastColumn(); 
 var lastRow = sheet.getLastRow();

for(i = 5; i <= lastCol; i = i + 2) {
 var temp = ""
 var letter = ""
 var column = 0
 column = i
 temp = (column - 1) % 26;
 letter = String.fromCharCode(temp + 65) + letter;
 var column = sheet.getRange(letter + "3:" + letter + lastRow)
 column.setNumberFormat("[$€]#,##0.00");
 }
}

推荐阅读