首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在有两个值匹配的情况下限制对一个结果的查询

在有两个值匹配的情况下限制对一个结果的查询
EN

Stack Overflow用户
提问于 2020-04-11 09:04:44
回答 1查看 41关注 0票数 0

我试图查询两个长列的代理名称,问题是在两个表上重复名称,一个是生产力的总总和,另一个是总利用率。

问题是,当我查询列时,它会返回所有用于生产力和利用率的数字。

如何使查询只搜索生产力和单独使用?

链接在这里:https://docs.google.com/spreadsheets/d/12Sydw6ejFobySHUj5JoYkAPbhr0mKoInCWxtHY1W4lk/edit#gid=0

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-15 09:16:04

在这种情况下,应用程序脚本将是一个更好的解决方案。以下代码的工作原理如下:

  1. 获取D列和A列的名称。
  2. 对于D列的每个名称,它将与A列的每个名称(即2 用于循环)进行比较。
  3. 如果名称重合(第一个如果),它将检查A列的背景色(第二个if),以累积Total和Total。
  4. 一旦到达A列的末尾,在D中用Total和Total (E和F列)写出每个名称的值。
代码语言:javascript
运行
复制
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数组,我建议您看看

参考资料

通过遵循快速入门,您可以了解更多关于应用程序脚本和工作表的信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61154369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档