我正在创建一个甘特样式表,它是这样的:
我想开发两个自定义函数来计算 B 和 C 列。这两个函数将以“D2:I2”和 A2 作为输入,然后计算 B2 和 C2。但我不知道如何开发这些功能。
这是我的电子表格的链接。
使用下面的代码并将以下内容添加到工作表的单元格 B2 =get_cells(CELL("address",D2)&":"&CELL("address",I4),COLUMN(A3))
您需要从代码编辑器中运行该函数一次,以接受所需的权限。
// @OnlyCurrentDoc
function get_cells(dataRangeA1, colorsCol ) {
const dataRange = SpreadsheetApp.getActive().getRange(dataRangeA1)
const colors = dataRange.getSheet().getRange(dataRange.getRow(), colorsCol,dataRange.getNumRows(),1).getBackgrounds().map(bg=>bg[0])
const dataColors = dataRange.getBackgrounds()
const row0 = dataRange.getRow()
const col0 = dataRange.getColumn()
const result = dataColors.map((colorsRow, irow)=>{
const colorToSearch = colors[irow]
let iFirst = undefined
let iLast = undefined
for(let i=0; i<colorsRow.length; i+=1){
if(colorsRow[i]===colorToSearch){
if(iFirst==undefined){
iFirst = i
}
iLast = i
}
}
return [columnToLetter(col0+iFirst)+(row0+irow), columnToLetter(col0+iLast)+(row0+irow)]
})
return result
}
function columnToLetter(col){
if (col < 1 || col > 18278) {
throw new Error('column must be in [0, 18278]')
}
let temp
let letter = ''
let column = col
while (column > 0) {
temp = (column - 1) % 26
letter = String.fromCharCode(temp + 65) + letter
column = (column - temp - 1) / 26
}
return letter
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句