Google apps script 使用嵌套FOR循环的杂散数据-示例工作表可用
表格如下: 我试图将两张图纸合并到第三张图纸上,使用两张原始图纸之间共享的文本。我从这个网站和其他网站的示例中窃取了大部分代码。请查看我的“错误”在哪里,它在合并工作表的末尾创建了一行重复文本(但不是完整的数据行)Google apps script 使用嵌套FOR循环的杂散数据-示例工作表可用,google-apps-script,Google Apps Script,表格如下: 我试图将两张图纸合并到第三张图纸上,使用两张原始图纸之间共享的文本。我从这个网站和其他网站的示例中窃取了大部分代码。请查看我的“错误”在哪里,它在合并工作表的末尾创建了一行重复文本(但不是完整的数据行) setnote表数据: 名称设置注释 名称1设置注释1 名称2设置注释2 记录表数据: 姓名记录 姓名1注意事项1 姓名2注意事项2 合并图纸数据: 姓名setnote takenote 名称1 setnote1 takenote1 名称2 setnote2 takenote2 s
setnote表数据:
名称设置注释
名称1设置注释1
名称2设置注释2
记录表数据:
姓名记录
姓名1注意事项1
姓名2注意事项2
合并图纸数据:
姓名setnote takenote
名称1 setnote1 takenote1
名称2 setnote2 takenote2
setnote1我稍微修改了你的代码。另外,我认为你不需要匹配函数。我复制了您的数据,并将页面名称更改为set、tak和merge。我更改了一些变量的名称,并使用了getDataRange(),因为它更易于使用,而且键入的次数更少
function mergeDatav01()
{
var ss=SpreadsheetApp.getActive();
var mergeSht=ss.getSheetByName('merge');
var setSht=ss.getSheetByName('set');
var takSht=ss.getSheetByName('tak');
var setVals=setSht.getDataRange().getValues();
var takVals=takSht.getDataRange().getValues();
var mergeStartRow=2;
for (var i=1;i<takVals.length;i++)
{
for (var j=1;j<setVals.length;j++)
{
if (takVals[i][0]==setVals[j][0])
{
var row=[];
row.push(takVals[i][0],setVals[j][1],takVals[i][1]);
mergeSht.appendRow(row);
}
}
}
}
函数mergeDatav01()
{
var ss=SpreadsheetApp.getActive();
var mergeSht=ss.getSheetByName('merge');
var setSht=ss.getSheetByName('set');
var takSht=ss.getSheetByName('tak');
var setVals=setSht.getDataRange().getValues();
var takVals=takSht.getDataRange().getValues();
var mergeStartRow=2;
对于(var i=1;i我稍微修改了您的代码。另外,我认为您不需要match函数。我复制了您的数据,并将页面名称更改为set、tak和merge。我更改了一些变量的名称,并使用了getDataRange(),因为它更易于使用,而且键入的次数更少
function mergeDatav01()
{
var ss=SpreadsheetApp.getActive();
var mergeSht=ss.getSheetByName('merge');
var setSht=ss.getSheetByName('set');
var takSht=ss.getSheetByName('tak');
var setVals=setSht.getDataRange().getValues();
var takVals=takSht.getDataRange().getValues();
var mergeStartRow=2;
for (var i=1;i<takVals.length;i++)
{
for (var j=1;j<setVals.length;j++)
{
if (takVals[i][0]==setVals[j][0])
{
var row=[];
row.push(takVals[i][0],setVals[j][1],takVals[i][1]);
mergeSht.appendRow(row);
}
}
}
}
函数mergeDatav01()
{
var ss=SpreadsheetApp.getActive();
var mergeSht=ss.getSheetByName('merge');
var setSht=ss.getSheetByName('set');
var takSht=ss.getSheetByName('tak');
var setVals=setSht.getDataRange().getValues();
var takVals=takSht.getDataRange().getValues();
var mergeStartRow=2;
对于(var i=1;i如果你不想弄乱谷歌应用程序脚本,这里有一个公式化的方法
合并A2中的公式
=Filter(setnote!A2:A,setnote!A2:A<>"")
=ARRAYFORMULA(IF(A2:A<>"",VLOOKUP(A2:A,setnote!A:B,match("setnote",setnote!$1:$1,0),FALSE),""))
=ARRAYFORMULA(IF(A2:A<>"",VLOOKUP(A2:A,takenote!A:B,match("takenote",takenote!$1:$1,0),FALSE),""))
={Filter(setnote!A2:A,setnote!A2:A<>""),ARRAYFORMULA(IF(Filter(setnote!A2:A,setnote!A2:A<>"")<>"",VLOOKUP(Filter(setnote!A2:A,setnote!A2:A<>""),setnote!A:B,match("setnote",setnote!$1:$1,0),FALSE),"")),ARRAYFORMULA(IF(Filter(setnote!A2:A,setnote!A2:A<>"")<>"",VLOOKUP(Filter(setnote!A2:A,setnote!A2:A<>""),takenote!A:B,match("takenote",takenote!$1:$1,0),FALSE),""))}
=过滤器(setnote!A2:A,setnote!A2:A“”)
合并B2中的公式
=Filter(setnote!A2:A,setnote!A2:A<>"")
=ARRAYFORMULA(IF(A2:A<>"",VLOOKUP(A2:A,setnote!A:B,match("setnote",setnote!$1:$1,0),FALSE),""))
=ARRAYFORMULA(IF(A2:A<>"",VLOOKUP(A2:A,takenote!A:B,match("takenote",takenote!$1:$1,0),FALSE),""))
={Filter(setnote!A2:A,setnote!A2:A<>""),ARRAYFORMULA(IF(Filter(setnote!A2:A,setnote!A2:A<>"")<>"",VLOOKUP(Filter(setnote!A2:A,setnote!A2:A<>""),setnote!A:B,match("setnote",setnote!$1:$1,0),FALSE),"")),ARRAYFORMULA(IF(Filter(setnote!A2:A,setnote!A2:A<>"")<>"",VLOOKUP(Filter(setnote!A2:A,setnote!A2:A<>""),takenote!A:B,match("takenote",takenote!$1:$1,0),FALSE),""))}
=ARRAYFORMULA(如果(A2:A“”,VLOOKUP(A2:A,setnote!A:B,匹配(“setnote”,setnote!$1:$1,0),FALSE),“”)
合并C2中的公式
=Filter(setnote!A2:A,setnote!A2:A<>"")
=ARRAYFORMULA(IF(A2:A<>"",VLOOKUP(A2:A,setnote!A:B,match("setnote",setnote!$1:$1,0),FALSE),""))
=ARRAYFORMULA(IF(A2:A<>"",VLOOKUP(A2:A,takenote!A:B,match("takenote",takenote!$1:$1,0),FALSE),""))
={Filter(setnote!A2:A,setnote!A2:A<>""),ARRAYFORMULA(IF(Filter(setnote!A2:A,setnote!A2:A<>"")<>"",VLOOKUP(Filter(setnote!A2:A,setnote!A2:A<>""),setnote!A:B,match("setnote",setnote!$1:$1,0),FALSE),"")),ARRAYFORMULA(IF(Filter(setnote!A2:A,setnote!A2:A<>"")<>"",VLOOKUP(Filter(setnote!A2:A,setnote!A2:A<>""),takenote!A:B,match("takenote",takenote!$1:$1,0),FALSE),""))}
=ARRAYFORMULA(IF(A2:A“”,VLOOKUP(A2:A,记笔记!A:B,匹配(“记笔记”,记笔记!$1:$1,0),FALSE),“”)
或者……您可以将所有内容合并到合并A2中
=Filter(setnote!A2:A,setnote!A2:A<>"")
=ARRAYFORMULA(IF(A2:A<>"",VLOOKUP(A2:A,setnote!A:B,match("setnote",setnote!$1:$1,0),FALSE),""))
=ARRAYFORMULA(IF(A2:A<>"",VLOOKUP(A2:A,takenote!A:B,match("takenote",takenote!$1:$1,0),FALSE),""))
={Filter(setnote!A2:A,setnote!A2:A<>""),ARRAYFORMULA(IF(Filter(setnote!A2:A,setnote!A2:A<>"")<>"",VLOOKUP(Filter(setnote!A2:A,setnote!A2:A<>""),setnote!A:B,match("setnote",setnote!$1:$1,0),FALSE),"")),ARRAYFORMULA(IF(Filter(setnote!A2:A,setnote!A2:A<>"")<>"",VLOOKUP(Filter(setnote!A2:A,setnote!A2:A<>""),takenote!A:B,match("takenote",takenote!$1:$1,0),FALSE),""))}
={Filter(setnote!A2:A,setnote!A2:A“”),ARRAYFORMULA(IF(Filter)(setnote!A2:A,setnote!A2:A“”),VLOOKUP(Filter)(setnote!A2:A,setnote!A2:A“”),setnote!A:B,match(setnote),setnote!1:$1,0),FALSE),“”),ARRAYFORMULA(IF(Filter(Filter)(setnote!A2:A,setnote!A2:A,setnote!A2:A“”),VLOOKUP(Filter)(Filter)(setnote!A2:A,setnote!A,takenote!A,takenote!$1,takenote,takenote,takenote,FALSE),“)}
如果你需要的话,我很乐意解释其中的任何一个。如果你不想弄乱谷歌应用程序脚本,这里有一个公式化的方法
合并A2中的公式
=Filter(setnote!A2:A,setnote!A2:A<>"")
=ARRAYFORMULA(IF(A2:A<>"",VLOOKUP(A2:A,setnote!A:B,match("setnote",setnote!$1:$1,0),FALSE),""))
=ARRAYFORMULA(IF(A2:A<>"",VLOOKUP(A2:A,takenote!A:B,match("takenote",takenote!$1:$1,0),FALSE),""))
={Filter(setnote!A2:A,setnote!A2:A<>""),ARRAYFORMULA(IF(Filter(setnote!A2:A,setnote!A2:A<>"")<>"",VLOOKUP(Filter(setnote!A2:A,setnote!A2:A<>""),setnote!A:B,match("setnote",setnote!$1:$1,0),FALSE),"")),ARRAYFORMULA(IF(Filter(setnote!A2:A,setnote!A2:A<>"")<>"",VLOOKUP(Filter(setnote!A2:A,setnote!A2:A<>""),takenote!A:B,match("takenote",takenote!$1:$1,0),FALSE),""))}
=过滤器(setnote!A2:A,setnote!A2:A“”)
合并B2中的公式
=Filter(setnote!A2:A,setnote!A2:A<>"")
=ARRAYFORMULA(IF(A2:A<>"",VLOOKUP(A2:A,setnote!A:B,match("setnote",setnote!$1:$1,0),FALSE),""))
=ARRAYFORMULA(IF(A2:A<>"",VLOOKUP(A2:A,takenote!A:B,match("takenote",takenote!$1:$1,0),FALSE),""))
={Filter(setnote!A2:A,setnote!A2:A<>""),ARRAYFORMULA(IF(Filter(setnote!A2:A,setnote!A2:A<>"")<>"",VLOOKUP(Filter(setnote!A2:A,setnote!A2:A<>""),setnote!A:B,match("setnote",setnote!$1:$1,0),FALSE),"")),ARRAYFORMULA(IF(Filter(setnote!A2:A,setnote!A2:A<>"")<>"",VLOOKUP(Filter(setnote!A2:A,setnote!A2:A<>""),takenote!A:B,match("takenote",takenote!$1:$1,0),FALSE),""))}
=ARRAYFORMULA(如果(A2:A“”,VLOOKUP(A2:A,setnote!A:B,匹配(“setnote”,setnote!$1:$1,0),FALSE),“”)
合并C2中的公式
=Filter(setnote!A2:A,setnote!A2:A<>"")
=ARRAYFORMULA(IF(A2:A<>"",VLOOKUP(A2:A,setnote!A:B,match("setnote",setnote!$1:$1,0),FALSE),""))
=ARRAYFORMULA(IF(A2:A<>"",VLOOKUP(A2:A,takenote!A:B,match("takenote",takenote!$1:$1,0),FALSE),""))
={Filter(setnote!A2:A,setnote!A2:A<>""),ARRAYFORMULA(IF(Filter(setnote!A2:A,setnote!A2:A<>"")<>"",VLOOKUP(Filter(setnote!A2:A,setnote!A2:A<>""),setnote!A:B,match("setnote",setnote!$1:$1,0),FALSE),"")),ARRAYFORMULA(IF(Filter(setnote!A2:A,setnote!A2:A<>"")<>"",VLOOKUP(Filter(setnote!A2:A,setnote!A2:A<>""),takenote!A:B,match("takenote",takenote!$1:$1,0),FALSE),""))}
=ARRAYFORMULA(IF(A2:A“”,VLOOKUP(A2:A,记笔记!A:B,匹配(“记笔记”,记笔记!$1:$1,0),FALSE),“”)
或者……您可以将所有内容合并到合并A2中
=Filter(setnote!A2:A,setnote!A2:A<>"")
=ARRAYFORMULA(IF(A2:A<>"",VLOOKUP(A2:A,setnote!A:B,match("setnote",setnote!$1:$1,0),FALSE),""))
=ARRAYFORMULA(IF(A2:A<>"",VLOOKUP(A2:A,takenote!A:B,match("takenote",takenote!$1:$1,0),FALSE),""))
={Filter(setnote!A2:A,setnote!A2:A<>""),ARRAYFORMULA(IF(Filter(setnote!A2:A,setnote!A2:A<>"")<>"",VLOOKUP(Filter(setnote!A2:A,setnote!A2:A<>""),setnote!A:B,match("setnote",setnote!$1:$1,0),FALSE),"")),ARRAYFORMULA(IF(Filter(setnote!A2:A,setnote!A2:A<>"")<>"",VLOOKUP(Filter(setnote!A2:A,setnote!A2:A<>""),takenote!A:B,match("takenote",takenote!$1:$1,0),FALSE),""))}
={Filter(setnote!A2:A,setnote!A2:A“”),ARRAYFORMULA(IF(Filter)(setnote!A2:A,setnote!A2:A“”),VLOOKUP(Filter)(setnote!A2:A,setnote!A2:A“”),setnote!A:B,match(setnote),setnote!1:$1,0),FALSE),“”),ARRAYFORMULA(IF(Filter(Filter)(setnote!A2:A,setnote!A2:A,setnote!A2:A“”),VLOOKUP(Filter)(Filter)(setnote!A2:A,setnote!A,takenote!A,takenote!$1,takenote,takenote,takenote,FALSE),“)}
如果你需要的话,我很乐意解释其中的任何一个