将选中的单元格从一个工作表映射到其他工作表以汇总数据

时间:2016-09-18 20:05:34

标签: google-apps-script google-sheets

我有一张包含客户信息的表单和另一张表,如果满足某些条件,客户信息需要这些表格。例如,第一页我有一个具有唯一标识符的客户,而在表2中,我有几个可以检查的列。如果检查这些列,我需要将这些列标题填充到表单1中的一个单元格中。所以

表1:

John Doe  019384388   Eats cookies 
                      Likes Movies
                      Needs Help from Stack exchange

表2:

Name     uniques identifier   Eats cookies   Likes movies Is tired Needs help 
John Doe 019384388               X             X                      X

这是我正在努力简化某些电子表格的工作。我使用过C,C ++和Java,所以我理解条件语句和循环,但我还没有真正使用过Google Apps Script / JavaScript。我很难知道如何调用电子表格中的各个单元格来制作条件语句,例如

if (box == "x" && unique id == "xxxxxx")
  cell ("Ai"(sheet1) = "Ai"(sheet2))

输入东西。也许使用更改for的{​​{1}}循环迭代所有单元格,直到检查完所有单元格?任何和所有的帮助表示赞赏。

2 个答案:

答案 0 :(得分:2)

您可以创建自定义Google Apps功能,并为其添加一个onedit触发器。:

function autoCheck(e) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet1 = ss.getSheetByName("Sheet1");
  var row = e.range.getRow();
  var col = e.range.getColumn();
  var sheet2 = ss.getSheetByName("Sheet2");
  if (e.range.getSheet().getName()=="Sheet2" && col >=3 && col<=5) {
     var str = "";
     for (i=3; i<=6; i++) {
        if (sheet2.getRange(row, i).getValue()=="X") {
           if (str.length==0) {
              str = sheet2.getRange(1, i).getValue();  
           } else {
             str =str + "\n" + sheet2.getRange(1, i).getValue();
           }
        }
     }
     sheet1.getRange(row, 3).setValue(str);
  }
}

答案 1 :(得分:1)

如果选中该框,则添加一个连接标题的行:

=if(B1 = 'x', $A$1, '') & if(B2 = 'x', $A$2, '') & ...

然后对ID进行vlookup()并返回连接字段。

如果需要,可以在if语句中添加逗号分隔符,如果不希望在表中看到它,则隐藏连接字段。