求助:如何用Google Sheets宏将B21值累加至B4单元格?
问题
我想把单元格B21(B11:B20的求和值)的数值加到B4单元格的现有值里,但写的Google Sheets宏没效果。我只会用VBA,之前用VBA实现类似功能的方法在Google Sheets里不管用,求解决办法。
当前代码:
function SimPossesion() { //Simulate Possesion(s) var spreadsheet = SpreadsheetApp.getActive(); spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Possession Simulation'),true); var PossessionSim = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var HomeScore = PossessionSim.getRange("B4"); var HomePossession = PossessionSim.getRange("B21"); var HS = HomeScore.getValue(); var HP = HomePossession.getValue(); var HomeScore = HS + HP };
问题分析
你的代码只完成了数值计算,但没有把计算结果写回B4单元格——最后一行只是把HS+HP的结果赋值给了变量HomeScore,但没有执行写入单元格的操作。另外变量HomeScore被重复定义(先指向单元格区域,又被赋值为数值),虽然不报错但会造成混淆。
修正后的代码
function SimPossesion() { // 模拟控球计分 var spreadsheet = SpreadsheetApp.getActive(); var sheet = spreadsheet.getSheetByName('Possession Simulation'); // 获取B4当前值和B21的求和值 var homeScoreCurrent = sheet.getRange("B4").getValue(); var homePossessionAdd = sheet.getRange("B21").getValue(); // 计算新的分数 var newHomeScore = homeScoreCurrent + homePossessionAdd; // 将结果写回B4单元格 sheet.getRange("B4").setValue(newHomeScore); };
关键说明
Google Apps Script(GAS)和VBA的核心差异之一就是单元格写入逻辑:
- VBA中可以直接通过
Range.Value = 新值完成写入 - GAS中必须调用
Range.setValue(新值)方法,才能把计算结果同步到表格单元格里
另外代码里去掉了冗余的激活工作表操作,直接通过getSheetByName获取目标工作表,执行效率更高。
内容的提问来源于stack exchange,提问作者Conor Smith
相关产品推荐
相关产品推荐

