2017-04-05 36 views
0

我需要使用A1表示法得到R1 C1表示法中的範圍地址。我發現沒有內置的配方可以做到。 即 如果我通過A3:C8則輸出應該是3 1 8 3在R1C1表示法要使用GAS 012谷歌電子表格中的A1表示法得到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); 
+0

什麼是你的問題? –

+0

如果我喂A3:C8,那麼輸出應該是r1c1表示法中的3 1 8 3。希望這是明確的 –

回答

1

你可以使用一個關聯數組作爲排序的查找表的。

var Alpha2Numeric = {A:1,B:2,C:3 ....}然後它只是顛倒冒號兩邊的字符串,並將字母轉換爲數字,用Alpha2Numeric [CapitalLetter]

0

我們可以用ADDRESS來得到R1C1地址。由於它需要行和列索引,我們可以使用ROW,COLUMN,ROWS和COLUMNS來獲取相應的索引。

下面的公式將返回小區的R1C1地址保存公式

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

在其他一些情況下,我們可以通過使用谷歌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; 
} 
相關問題