我试图查询两个长列的代理名称,问题是在两个表上重复名称,一个是生产力的总总和,另一个是总利用率。
问题是,当我查询列时,它会返回所有用于生产力和利用率的数字。
如何使查询只搜索生产力和单独使用?
链接在这里:https://docs.google.com/spreadsheets/d/12Sydw6ejFobySHUj5JoYkAPbhr0mKoInCWxtHY1W4lk/edit#gid=0
发布于 2020-04-15 09:16:04
在这种情况下,应用程序脚本将是一个更好的解决方案。以下代码的工作原理如下:
function onOpen() { //Will run every time you open the sheet
//Gets the active Spreadsheet and sheet
let sprsheet = SpreadsheetApp.getActiveSpreadsheet();
let sheet = sprsheet.getActiveSheet();
var lastRow = sheet.getLastRow();
var getNames = sheet.getRange(3, 1, lastRow).getValues(); //Names from row 2, col 1, until the last row
var totalNames = sheet.getRange("D4:D5").getValues(); //Change the range for more names
let prodColor = '#f2f4f7'; //hexadecimal codes of the background colors of names in A
let utilColor = '#cfe2f3'; //
for (var i = 0; i < totalNames.length; i++) {
var totalProd = 0, totalUtil = 0; //Starts at 0 for each name in D
for (var j = 0; j < getNames.length; j++) {
if (totalNames[i][0] == getNames[j][0]) {
if (sheet.getRange(j + 3, 1).getBackgroundObject().asRgbColor().asHexString() == prodColor) { //if colors coincide
totalProd += sheet.getRange(j + 3, 2).getValue();
} else if (sheet.getRange(j + 3, 1).getBackgroundObject().asRgbColor().asHexString() == utilColor) {
totalUtil += sheet.getRange(j + 3, 2).getValue();
}
}
}
sheet.getRange(i+4, 5, 1 ,2).setValues([[totalProd, totalUtil]]);
}
}
注意:您必须手动运行代码,并在第一次运行时接受权限。之后,每次打开工作表时,它都会自动运行。代码运行和反映工作表上的更改可能需要几秒钟时间。
为了更好地理解循环和2D数组,我建议您看看这。
参考资料
通过遵循快速入门,您可以了解更多关于应用程序脚本和工作表的信息。
https://stackoverflow.com/questions/61154369
复制相似问题