我試圖弄清楚當我需要在公式中使用列號時,我的選擇是什么,以及我是否真的需要將列號寫入列字母方法來完成我想要做的事情。
看到我在這里的這個方法:
createFormulas(lookupField, lookupColumns) {
// Iterate through the lookupColumn array
lookupColumns.forEach(value => {
let columnNumber = this.getColumn(this.headers, value);
let range = this.sheet.getRange(2, columnNumber, this.lastRow - 1, 1);
// range.setFormula('=$A2');
range.setFormula('=' columnNumber '2' ); // doesn't work obviously
})
}
我正在嘗試根據列在列中添加公式。
this.getColumn()根據傳入的列名回傳列號。let range設定我想在其中設定公式的范圍range.setFormula('=$A2')將此公式粘貼到range并相應地更新參考(即$A3,$A4, 等)。這不是我最終想要使用的公式,只是一個簡化的例子。
但是,我需要動態設定參考中的列。
我所擁有的顯然行不通:range.setFormula('=' columnNumber '2' );. 那只會導致列號72在哪里7。
我知道我可以撰寫一種將列號轉換為字母的方法。我只是感到驚訝,沒有內置的方法可以做到這一點,也沒有其他一些本地方式來實作這一點。
例如,在Excel VBA我認為你可以這樣做"=" & Cells(2, columnNumber).Address或類似的東西(已經有一段時間,我可能是錯的),它應該等同于=A2,=A3,=A4,等范圍。
因此,在將此列號寫入字母方法之前,我只是想檢查一下:這是完成我所追求的唯一方法,還是有一種我沒有看到的本地處理方法?
uj5u.com熱心網友回復:
實際上,能夠使用.getA1Notation().
重構為以下內容并按預期作業:
createFormulas(lookupField, lookupColumns) {
// Iterate through the lookupColumn array
lookupColumns.forEach(value => {
let columnNumber = this.getColumn(this.headers, value);
let formulaRange = this.sheet.getRange(2, columnNumber, this.lastRow - 1, 1);
let referenceRange = this.sheet.getRange(2, this.idColumn, this.lastRow - 1, 1);
formulaRange.setFormula("=" referenceRange.getCell(1, 1).getA1Notation());
})
}
uj5u.com熱心網友回復:
以防萬一。基于https://stackoverflow.com/a/64456745/14265469
function numberToLetters(num) {
let letters = '';
while (num >= 0) {
letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'[num % 26] letters;
num = (num - num % 26) / 26 - 1;
}
return letters;
}
console.log(numberToLetters(0)); // --> A
console.log(numberToLetters(25)); // --> Z
console.log(numberToLetters(26)); // --> AA
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/374826.html
