Чтобы получить нотацию R1C1 из нотации A1 в электронной таблице Google с помощью GAS

Мне нужно получить адрес диапазона в нотации R1 C1 с учетом нотации A1. Я не нашел встроенной формулы, которая может это сделать. т. е. если я передам A3: C8, то вывод должен быть 3 1 8 3 в нотации r1c1

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);

person Code Guy    schedule 05.04.2017    source источник
comment
Каков твой вопрос?   -  person Robin Gertenbach    schedule 05.04.2017
comment
Если я подаю A3: C8, тогда вывод должен быть 3 1 8 3 в нотации r1c1. Надеюсь, это ясно   -  person Code Guy    schedule 05.04.2017


Ответы (2)


Мы могли бы использовать АДРЕС, чтобы получить адрес R1C1. Поскольку для этого требуются индексы строк и столбцов, мы могли бы использовать ROW, COLUMN, ROWS и COLUMNS для получения соответствующих индексов.

Следующая формула вернет адрес R1C1 ячейки, содержащей формулу

=ADDRESS(ROW(),COLUMN(),1,FALSE)

В некоторых других сценариях нам может понадобиться R1C1 с помощью скрипта Google Apps, в этом мы могли бы использовать 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;
}
person Rubén    schedule 01.12.2017
comment
Просто для наблюдателей результат будет что-то вроде R1C3:R1C17 - person Cheeso; 06.09.2018

Вы можете использовать ассоциативный массив как своего рода таблицу поиска.

var Alpha2Numeric = {A:1,B:2,C:3....}, тогда нужно просто поменять местами строки с каждой стороны двоеточия и преобразовать буквы в числа с помощью Alpha2Numeric[CapitalLetter]

person Cooper    schedule 05.04.2017