我有很多行要计算Google表格中有多少个单元格加粗。我浏览了插件,并搜索了预制的代码片段(我没有编程技能)。
我找到了一个脚本,该脚本完全可以实现我想要的功能,但是它检查的单元格以及将答案输出到哪里(此处是来自用户随机部分的答案)都经过硬编码:Count Bold Cells in Google Sheets Script >
我有几百行,我想知道有多少个加粗的单元格,所以我必须制作数百个单独的脚本才能使用它。我试图将其转换为可以在工作表上拖动/复制的命令,但是这种技能远远超出了我的范围。
这是用粗体对所有单元格进行计数的代码,但是范围输入和输出是硬编码的
var book = SpreadsheetApp.getActiveSpreadsheet();
var sheet = book.getActiveSheet();
var range_input = sheet.getRange("E2:S7");
var range_output = sheet.getRange("G14");
// Get the fontWeights of the range and flatten the array
var cell_styles = range_input.getFontWeights().join().split(",");
// Filter out any value that is not "bold"
var filter_bold = cell_styles.filter(function (e) { return e == "bold" });
// Set the count
range_output.setValue(filter_bold.length);
}
有人可以提供一个脚本和公式,让我在工作表中定义一个范围,然后将其拖动并更新吗?
答案 0 :(得分:0)
这里是指向working example的链接,下面是后面的代码。 需要注意的重要一点是,您需要刷新浏览器窗口以重新计算公式。仅仅通过更改单元格样式就无法刷新公式结果。
function onOpen(){
refresh()
}
function refresh(){
var sheet = SpreadsheetApp.getActive().getSheetByName("Sheet2")
var formulaCol = sheet.getRange("E:E").getColumn()
var formulaRange = sheet.getRange(2, formulaCol, sheet.getDataRange().getLastRow()-1, 1)
var rowCount = formulaRange.getLastRow()-formulaRange.getRow()+1
var dummyFormulas = []
var formulas = formulaRange.getFormulas()
for(var i=0; i<rowCount; i++){
dummyFormulas.push(['=""'])
}
Logger.log(dummyFormulas)
Logger.log(formulas)
formulaRange.setFormulas(dummyFormulas)
SpreadsheetApp.flush()
formulaRange.setFormulas(formulas)
}
function countBoldCells(startRow, startColumn, endRow, endColumn, random){
var book = SpreadsheetApp.getActiveSpreadsheet();
var sheet = book.getActiveSheet();
var range_input = SpreadsheetApp.getActiveSheet().getRange(startRow, startColumn, endRow-startRow+1, endColumn-startColumn+1)
// Get the fontWeights of the range and flatten the array
var cell_styles = range_input.getFontWeights().join().split(",");
// Filter out any value that is not "bold"
var filter_bold = cell_styles.filter(function (e) { return e == "bold" });
return filter_bold.length;
}