将特定数据从工作表复制到工作表
Posted
技术标签:
【中文标题】将特定数据从工作表复制到工作表【英文标题】:Copy specific data from sheet to sheet 【发布时间】:2020-11-05 15:24:14 【问题描述】:https://docs.google.com/spreadsheets/d/1mpALs4rdNj-TFFgCQ0CEBP453v-FfQJR_bBxOzQakWU/edit#gid=1256640730
我有一个“主列表”表从 Google 表单 收集数据,我需要脚本将主列表中的数据复制到根据他们的“位置”相关的工作表。
Example 1
表 1:包含所有数据(主列表)名称......地址...... ................位置 玫瑰.......21,Radje Road,88888.........吉打 玫瑰.......21,Radje Road,88888.........吉打 玫瑰.......21,Radje Road,88888............槟城 Stone......5,Jae Road,22222......槟城
表 2:从表 1 复制数据(仅限位置 - 吉打)姓名......地址............ ...................位置 玫瑰.......21,Radje Road,88888.........吉打 Rose.......21,Radje Road,88888.........吉打州
表 3:从表 1 复制数据(仅限位置 - 槟城)姓名......地址............ ...................位置 玫瑰.......21,Radje Road,88888............槟城 Stone......5,Jae Road,22222............槟城
Example 2
表 1:包含所有数据(主列表)姓名.....性别 布莱恩.....男 梅.....女 莉莉.....女 xx.....女 xx.....男
工作表 2:复制工作表 1 中的数据(仅限性别-女性)姓名.....性别 xx.....女 莉莉.....女 梅.....女
工作表 3:复制工作表 1 中的数据(仅限性别-男性)姓名.....性别 布莱恩.....男
const ss=SpreadsheetApp.getActive();
const sh=ss.getSheetByName('Master List');
const shsr=2;//data start row on master list
const shhr=1;//master list header row
const hA=sh.getRange(shhr,1,1,sh.getLastColumn()).getValues()[0];
const vs=sh.getRange(shsr,1,sh.getLastRow()-shsr+1,sh.getLastColumn()).getValues();
const base='Sheet';
let shts=ss.getSheets();
shts.forEach(function(s,i)if(s.getName()!='Master List')ss.deleteSheet(s););//delete all other sheets
const gvs=sh.getRange(shsr,7,sh.getLastRow()-shsr+1,1).getValues().map(function(r)return r[0]);
const s=new Set(gvs);
const g=[...s];//g has unique values now
g.forEach(function(v,i)
let nsh=ss.insertSheet(base + String(i+1),i+1);
let aA=[]
aA.push(hA);//start with header row
vs.forEach(function(r,j)
//compare to column G value
if(r[6]==v)
aA.push(r);//add rows that match
);
nsh.getRange(1,1,aA.length,aA[0].length).setValues(aA);
SpreadsheetApp.flush();//not really necessary but fun to watch the progress
);
【问题讨论】:
我必须为我糟糕的英语水平道歉。不幸的是,来自I need the script to duplicate / transfer / copy the data to another sheet by classification in column G "Location" to the related new sheet.
,我无法理解您的目标和当前脚本的问题。那我可以问你关于他们的事吗?例如,通过将脚本添加到您的问题中来解释您的脚本怎么样?您的示例电子表格似乎有脚本。
对不起,我的英语很差...我需要的实际上是将数据从我的主列表“复制”到具有特定位置的新工作表中。
我将用另一个例子来解释,看看你是否明白我的意思.. 表1:包含所有数据(主列表) Bryan 男 Mei 女 Lily 女 xx女性 xx 男性 工作表 2:从工作表 1 复制数据(仅限女性) xx 女性 Lily 女性 Mei 女性 工作表 3:从工作表 1 复制数据(仅限男性) Bryan Male
感谢您回复并添加更多信息。关于共享电子表格中的脚本,我认为使用当前脚本解释当前问题将帮助用户思考解决方案。这个怎么样?
我还没有任何脚本,因为我不知道该怎么做才能得到这个结果......
【参考方案1】:
试试这个:
function copyDataUniqueToColG()
const ss=SpreadsheetApp.getActive();
const sh=ss.getSheetByName('Master List');
const shsr=2;//data start row on master list
const shhr=1;//master list header row
const hA=sh.getRange(shhr,1,1,sh.getLastColumn()).getValues().map(function(r)return[r[1],r[2],r[3],r[4],r[5],r[6]])[0];
const vs=sh.getRange(shsr,1,sh.getLastRow()-shsr+1,sh.getLastColumn()).getValues();
const base='Sheet';
let shts=ss.getSheets();
//shts.forEach(function(s,i)if(s.getName()!='Master List')ss.deleteSheet(s););//delete all other sheets
const gvs=sh.getRange(shsr,7,sh.getLastRow()-shsr+1,1).getValues().map(function(r)return r[0]);
const s=new Set(gvs);
const g=[...s];//g has unique values now
g.forEach(function(v,i)
let sA=[];
ss.getSheets().forEach(function(obj)sA.push(obj.getName()));
if(sA.indexOf(v)==-1)ss.insertSheet(v);
let aA=[]
aA.push(hA);//start with header row
vs.forEach(function(r,j)
//compare to column G value
if(r[6]==v)
aA.push([r[1],r[2],r[3],r[4],r[5],r[6]]);//add rows that match
);
let dsh=ss.getSheetByName(v);
dsh.getRange(1,1,aA.length,aA[0].length).setValues(aA);
SpreadsheetApp.flush();//not really necessary but fun to watch the progress
);
【讨论】:
嗨 Cooper,非常感谢您的回复,但它对我不起作用.. 我需要的功能实际上是根据他们的“将数据从主列表复制到相关工作表”地点”。 docs.google.com/spreadsheets/d/…您可以使用此共享电子表格编辑脚本。 我的“主列表”用于收集来自不同地方的所有客户数据库,您可以看到我的其他表格,例如“槟城”,“霹雳”,“森美兰”,“马六甲”, "Johor,"Johor Bahru","Kedah", 仍然是空的,所以我需要根据他们的“位置”将客户数据从主列表复制到这些工作表的功能。 我对此进行了测试,它对我有用。此外,我不会关注电子表格的链接。您在问题中需要的所有内容都必须张贴在问题中。不要依赖外部链接。不适合我是什么意思? 无法将源从“主列表”复制并粘贴到其他工作表... 对不起,我不知道该告诉你什么,它对我有用以上是关于将特定数据从工作表复制到工作表的主要内容,如果未能解决你的问题,请参考以下文章
使用 Python(和 DataNitro)将单元格从一个 Excel 工作簿中的特定工作表复制到另一个 Excel 工作簿中的特定工作表
如何在 MS Excel 中将特定数据从一个 Excel 工作表传输到另一个工作表?
在 Excel 中将某些特定单元格从一个工作表复制到另一个工作表的 VBA 可能是啥?