使用GAS在Google电子表格中从A1表示法获取R1C1表示法

时间:2017-04-05 09:17:48

标签: google-apps-script google-sheets

我需要在A1 C1表示法中获得R1 C1表示法中的范围地址。我发现没有内置配方可以做到这一点。 即 如果我通过A3:C8,那么输出应该是r1c1表示法中的3 1 8 3

function getRangeAddress() {
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    var range = sheet.getActiveRange()
    if (range) var rangeAddress = range.getA1Notation();
    else var rangeAddress = sheet.getActiveRange().getA1Notation();
    return rangeAddress;
}

converttoR1C1(rangeAddress);

2 个答案:

答案 0 :(得分:1)

您可以使用关联数组作为查找表的排序。

var Alpha2Numeric = {A:1,B:2,C:3 ....}然后它只是反转冒号两边的字符串并将字母转换为数字与Alpha2Numeric [CapitalLetter] < / p>

答案 1 :(得分:1)

我们可以使用ADDRESS来获取R1C1地址。由于它需要行和列索引,我们可以使用ROW,COLUMN,ROWS和COLUMNS来获取相应的索引。

以下公式将返回包含公式

的单元格的R1C1地址
=ADDRESS(ROW(),COLUMN(),1,FALSE)

在其他一些场景中,我们可能需要使用Google Apps脚本来获取R1C1,在此我们可以使用getRow和getColumn来获取起始单元格索引。使用getNumRows和getNumColumns并计算结束单元格的相应索引。

示例:

function toR1C1(reference) {
  var range = SpreadsheetApp.getActiveSheet().getRange(reference);
  var row = range.getRow();
  var column = range.getColumn();
  var start = 'R' + row + 'C' + column;
  var rows = range.getNumRows();
  var columns = range.getNumColumns();
  var end = ((rows * columns) == 1)?'':':R' + (row + rows - 1) + 'C' + (column + columns - 1);
  return start + end;
}