Google 电子表格:在公式中使用列 + n

Google Spreadsheet: Use column + n in formular

在 X 列的电子表格中,我有以下公式:

=ImportRange('_keys'!$B;"2015!A200:A203")

现在我想将此公式复制到 X+n 列(在本例中为 X+2),这样它应该如下所示:

=ImportRange('_keys'!$B;"2015!C200:C203")

但它不会更改列,我必须手动更改它。 是否可以更改此公式,使其始终使用公式所在的列?

我的解决方案:

我编写了一个将数字转换为字母的简单自定义函数。

   /**
   * Converts number of column into column letter
   *
   * @param {Number} aNumer Number of column
   * @return {String} Letter of column
   * @customfunction
   */
    function COL_NR2LETTER(aNumber) {
      var letterArray = ['-', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'AG', 'AH', 'AI', 'AJ', 'AK', 'AL', 'AM', 'AN', 'AO', 'AP', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AV', 'AW', 'AX', 'AY', 'AZ'];
      if (aNumber < 1 || aNumber > letterArray.length) 
         throw "column index out of bound error";

      return letterArray [aNumber];  
    } 

现在可以复制了

=ImportRange('_keys'!$B;
   "2015!" & COL_NR2LETTER(Column(A1)) &"200:"& COL_NR2LETTER(Column(A1)) &"203")

从第 X 列到第 X+n 列。

您可以使用COLUMN() 函数将当前单元格的列作为数字获取。使用 ADDRESS() 你可以把它变成一个单元格引用字符串。请参阅 COLUMN and ADDRESS.

的文档

您的代码变为

=ImportRange('_keys'!$B;
             CONCATENATE("2015!", ADDRESS(200, COLUMN()-Y, 4),
                         ":",     ADDRESS(203, COLUMN()-Y, 4))
            )

其中 Y 是 A 列和 X 列(此公式所在的位置)之间的偏移量。 ADDRESS 的第三个参数使行和列都相对(没有 $)。请注意,ADDRESS 的参数顺序是 row 然后是 column,很烦人。