2013-09-25 70 views
0

我用這個代碼的工作目前,但我想這可能是它是不是也很簡單:如何從標題標籤獲取A1表示法中的列範圍?

var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues(); 
var comCol = headers[0].indexOf('Header Label'); 

rng = sheet.getRange(1, comCol + 1); 

var colStr = rng.getA1Notation(); 
var colLtr = colStr.charAt(0); 
//Logger.log(colLtr+":"+colLtr); Should output something like "P:P" 
var range = ss.getSheets()[0].getRange(colLtr+":"+colLtr); 

我選擇第一行,創造價值的一個數組,&搜索數組相當簡單。我認爲笨重的部分是組成一個整列的範圍。在A1符號中,這看起來像「A:A」。

也許我過思考點,應該有一個lookupCol(String)功能,甚至一個getRangeOfCol(Index)功能。

+0

您的代碼看起來不錯,但你能舉一個你期望輸出的例子嗎?目前,如果您的工作表在D列中具有文本'標題標籤',則它將在不同的工作表中返回D:D的範圍。 – Srik

+0

這段代碼目前產生我想要的輸出。如果「標題標籤」是D列的標籤,則產生的範圍實際上是D:D,我只是認爲這個當前代碼有點複雜且不必要的複雜。 –

回答

1

嘗試是這樣的

var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues(); 
var comCol = headers[0].indexOf('Header Label'); 
var comLtr= String.fromCharCode(65 + comCol); 
var range = ss.getSheets()[0].getRange(comLtr +":"+colLtr); 
+1

'String.fromCharCode(65 + comCol);'只適用於前26列(A ... Z),不適用於後續的列(AA..ZZ) – farialima

0

要允許列AA和超越,並假設該標題標籤是在第1行,我改變了定義colLtr到行:

var colLtr = colStr.substr(0, colStr.indexOf('1'));