【发布时间】:2017-02-21 12:17:54
【问题描述】:
我在 Google 脚本中有此代码,用于根据 Sheet3 的 Sheet2 中的条件从 Sheet1 获取数组。但现在阵列只放置在另一个之下。我需要的是将“v”中的每个新数组放在接下来的 5 列中,例如我的电子表格中的示例。
其次 - 在此之前,我使用了带有搜索公式的过滤器,它允许我使用 * 或 ? 等通配符。如何在我的新函数中使用通配符或正则表达式?
如果有任何帮助,我将不胜感激。
function getval(){
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet2");
var sspodbor = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet3");
var range = ss.getRange("A2:A29");
var values = range.getValues();
var rangez = sheet.getRange("A1:A14");
var valuesz = rangez.getValues();
var z = []
for (var x = 0; x<valuesz.length; x++){
z.push(valuesz[x])
}
var v = [];
for (var q = 0; q < valuesz.length; q++){
for (var s = 0; s < values.length; s++){
if(values[s][5] == z[q]){
v.push([values[s][0],values[s][1],values[s][2],values[s][3],values[s][4]]);
}
//I am guessing that here must be a separating function
}
}
var range = sspodbor.getRange(4, 1, v.length,v[0].length);
range.setValues(v);
}
我的电子表格:https://docs.google.com/spreadsheets/d/1o7ErbeFHA7yyxMC0HMn3Uj5ZBRcy2uAwa1UpolVpBFI/edit?usp=sharing
【问题讨论】:
-
一些小事:首先 var range = ss.getRange("A2:A29");可能应该是 var range = ss.getRange("A2:F29");其次 var z = [] 应该是 var z = [];但对我来说最大的问题是你如何对它们进行分组。 Sheet2 只有 14 个值。所以只有 14 个 q 值,但您在示例中显示了 16 列。那么,您如何将它们分组,
-
你好,@Cooper!如您所见,我从您之前的回答中学到了一些关于数组的知识!我以非常简单的方式对它们进行分组:在使用 q var 的循环中,我从 rangez 中取出一个单元格,然后在使用 s var 的循环中检查值范围中的某个值是否等于它,然后将其推送到 v 数组。当我取下一个 q var 时,我需要再次将相等的值从 0-4 推送到下一列
-
我最终在这里包含了 q 值: if(values1[s][5] == z[q]){ v.push([values1[s][0],values1[s ][1],values1[s][2],values1[s][3],values1[s][4],q]);} 以及您的输出数据,因为它似乎对每个组都是通用的。
标签: arrays regex google-apps-script wildcard