Javascript Google应用程序脚本,用于发现Google工作表中两列之间的差异,忽略空白单元格和多个实例
我是一名JavaScipt开发新手,在以下情况下需要一些帮助: 我在Google表单中有两列数据(“A列”和“B列”),其中每个单元格都包含产品名称,但“B列”也包含空白单元格(搜索和匹配时,我希望跳过空白单元格),看起来如下所示: “A列”“B列” 问题:我想创建一个搜索和匹配功能,该功能适用于这两列,并从“B列”中找出不在“a列”中的产品,并将其列在第三列,没有空白单元格,每个产品只有一个实例(如果“B列”中有多个名称相同的产品不在“A列”中) 上述示例的结果为: “C列(结果)”Javascript Google应用程序脚本,用于发现Google工作表中两列之间的差异,忽略空白单元格和多个实例,javascript,excel,google-apps-script,Javascript,Excel,Google Apps Script,我是一名JavaScipt开发新手,在以下情况下需要一些帮助: 我在Google表单中有两列数据(“A列”和“B列”),其中每个单元格都包含产品名称,但“B列”也包含空白单元格(搜索和匹配时,我希望跳过空白单元格),看起来如下所示: “A列”“B列” 问题:我想创建一个搜索和匹配功能,该功能适用于这两列,并从“B列”中找出不在“a列”中的产品,并将其列在第三列,没有空白单元格,每个产品只有一个实例(如果“B列”中有多个名称相同的产品不在“A列”中) 上述示例的结果为: “C列(结果)” 非常
非常感谢您的帮助
提前谢谢!我为你准备了一个脚本 我希望他能为你的项目提供帮助
function myFunction() {
var sheet = SpreadsheetApp.openById("id");
var myArrayA ;
var myArrayB ;
var myArrayC ;
var control = false;
var controlC = false;
var indic = 0;
var i;
var a;
var c;
sheet.getRange("C:C").clear();
myArrayA = sheet.getRange("A:A").getValues();
myArrayB = sheet.getRange("B:B").getValues();
myArrayC = sheet.getRange("C:C").getValues();
Logger.log(myArrayA[0][0]);
for ( i = 0 ; i<= 10 ; i++)
{
for ( a = 0 ; a <= 10; a++)
{
if (myArrayB[i][0] == myArrayA[a][0] && myArrayB[i][0] != "")
{
control = true;
}
}
if ( control == false )
{
for ( b=0; b <= 10 ; b++)
{
if ( myArrayC[b][0] == myArrayB[i][0] && myArrayC[b][0] != ""){
controlC = true;
}
}
if ( controlC == false){
myArrayC[indic][0] = myArrayB[i][0];
indic = indic + 1;
}
}
control = false;
controlC = false;
}
sheet.getRange("D:D").setValues(myArrayC);
}
函数myFunction(){
风险值表=电子表格应用程序openById(“id”);
var myArrayA;
var myArrayB;
var myArrayC;
var控制=错误;
var controlC=假;
var-indi=0;
var i;
var a;
var c;
sheet.getRange(“C:C”).clear();
myArrayA=sheet.getRange(“A:A”).getValues();
myArrayB=sheet.getRange(“B:B”).getValues();
myArrayC=sheet.getRange(“C:C”).getValues();
Logger.log(myArrayA[0][0]);
对于(i=0;i您可以相当轻松地完成此操作,而无需使用内置函数的脚本:
使用aVLOOKUP
在a:a中搜索B:B的实例:
回答这些“这是我的规格,写出来”问题不是一个好主意汉恩,你的脚本为我的问题提供了一个解决方案,尽管它不像我的脚本那样跳过空白单元格。你的解决方案更高效,比我的快得多。如果可以,请再次检查提供的脚本,因为我找不到问题所在空单元格在myArrayC中注册。结果列也包含空单元格…您可以只构建其他数组。将结果复制到不包含空单元格的新数组上。
Product89
Product20
Product15
function myFunction() {
var sheet = SpreadsheetApp.openById("id");
var myArrayA ;
var myArrayB ;
var myArrayC ;
var control = false;
var controlC = false;
var indic = 0;
var i;
var a;
var c;
sheet.getRange("C:C").clear();
myArrayA = sheet.getRange("A:A").getValues();
myArrayB = sheet.getRange("B:B").getValues();
myArrayC = sheet.getRange("C:C").getValues();
Logger.log(myArrayA[0][0]);
for ( i = 0 ; i<= 10 ; i++)
{
for ( a = 0 ; a <= 10; a++)
{
if (myArrayB[i][0] == myArrayA[a][0] && myArrayB[i][0] != "")
{
control = true;
}
}
if ( control == false )
{
for ( b=0; b <= 10 ; b++)
{
if ( myArrayC[b][0] == myArrayB[i][0] && myArrayC[b][0] != ""){
controlC = true;
}
}
if ( controlC == false){
myArrayC[indic][0] = myArrayB[i][0];
indic = indic + 1;
}
}
control = false;
controlC = false;
}
sheet.getRange("D:D").setValues(myArrayC);
}
=VLOOKUP(B:B,A:A,1,FALSE)
=IF(ISERROR(VLOOKUP(B:B,A:A,1,FALSE)),B:B,)
=SORT(UNIQUE(IF(ISERROR(VLOOKUP(B:B,A:A,1,FALSE)),B:B,)),1,TRUE)