是否可以基于2个值删除其他图纸上的行?假设我有3张床单。在主工作表(工作表1)中,将有两列:分支和管理器,与其余工作表相同。
这里是电子表格样本。
示例数据:
第1页:(主页)
--- BRANCH --- MANAGER ---
California Tom Chang
Brooklyn Jon Sieg
New York Raq Craig
表2:
--- BRANCH --- MANAGER ---
California Jane Cali
California Tom Chang
San Francisco James Chao
表2:
--- BRANCH --- MANAGER ---
California Jane Cali
California Tom Chang
New York Daniel Trevor
应该做的是:
分支列值不应在所有工作表中重复。因此,我们需要做的是删除工作表2和3上的行,如果分支列与主工作表(表1)相等IF AND ONLY IF如果管理器不相同/相等。因此,在我上面给出的数据中,加州支行和经理Tom Chang存在于所有工作表中,因此不应触及。但加州支行在其余2张纸中使用不同的Manager重复。因此,第2和第3页应删除第California-Jane Cali行。
偶然发现一个从这篇文章中借来的脚本,但似乎不起作用。此处:
function removeDupsInOtherSheets() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var mainsheet = ss.getSheetByName("Sheet3").getDataRange().getValues();
var sheet2 = ss.getSheetByName("Sheet2").getDataRange().getValues();
var sheet3 = ss.getSheetByName("Sheet3").getDataRange().getValues();
// iterate mainsheet and check in sheet2 & sheet3 if duplicate values exist
var nsheet2 = [];
var nsheet3 = [];
var mainsheetCol1 = [];// data in column1 of main sheet
var mainsheetCol2 = [];// data in column2 of main sheet
for(var n in mainsheet){
mainsheetCol1.push(mainsheet[n][0]); //column1
mainsheetCol2.push(mainsheet[n][3]); //column2
}
for(var n in sheet2){ // iterate sheet2 and test col 1 vs col 1 and co2 1 vs co2 1in sheet2
var noDup1 = checkForDup(sheet2[n],mainsheetCol1,mainsheetCol2)
if(noDup1){nsheet2.push(noDup1)};// if not present in sheet3 then keep
}
for(var n in sheet3){ // iterate sheet3 and test col 1 vs col 1 and co2 1 vs co2 in sheet3
var noDup2 = checkForDup(sheet3[n],mainsheetCol1,mainsheetCol2)
if(noDup2){nsheet3.push(noDup2)};// if not present in sheet3 then keep
}
// view result
Logger.log(nsheet2);
Logger.log(nsheet3);
// clear and update sheets
ss.getSheetByName("Sheet2").getDataRange().clear();
ss.getSheetByName("Sheet3").getDataRange().clear();
ss.getSheetByName("Sheet2").getRange(1,1,nsheet2.length,nsheet2[0].length).setValues(nsheet2);
ss.getSheetByName("Sheet3").getRange(1,1,nsheet3.length,nsheet3[0].length).setValues(nsheet3);
}
//Here can't seem to make it work to check if column 2 is not equal to the other sheets
//item is sheet2[n]
// s is mainsheetCol1
// s2 is mainsheetCol2
function checkForDup(item,s,s2){
Logger.log(s+' = '+item[0]+' ?')
Logger.log(s2+' = '+item[1]+' ?')
if((s.indexOf(item[0])>-1) && (s2.indexOf(item[1])>-1))){
return null;
}
return item;
}
希望有人能帮助/指导我。非常感谢。
Post上给出的代码不起作用。我稍微修改了一下以使其工作。在这里,
function removeDupsInOtherSheets() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s1 = ss.getSheetByName("Sheet1").getDataRange().getValues();
var s2 = ss.getSheetByName("Sheet2").getDataRange().getValues();
var s3 = ss.getSheetByName("Sheet3").getDataRange().getValues();
// iterate s3 and check in s1 & s2 if duplicate values exist
var nS1 = [];
var nS2 = [];
var s3Col1 = [];// data in column1 of sheet3
for(var n=0; n<s3.length; ++n){
s3Col1.push(s3[n][0]);
}
for(var n=0; n<s1.length; ++n){ // iterate sheet1 and test col 1 vs col 1 in sheet3
var noDup1 = checkForDup(s1[n],s3Col1)
if(noDup1){nS1.push(noDup1)};// if not present in sheet3 then keep
}
for(var n=0; n<s2.length; ++n){ // iterate sheet2 and test col 1 vs col 1 in sheet3
var noDup2 = checkForDup(s2[n],s3Col1)
if(noDup2){nS2.push(noDup2)};// if not present in sheet3 then keep
}
Logger.log(nS1);// view result
Logger.log(nS2);
ss.getSheetByName("Sheet1").getDataRange().clear();// clear and update sheets
ss.getSheetByName("Sheet2").getDataRange().clear();
var nS1Length = nS1.length;
var nS2Length = nS2.length;
// This is the change needed in code you have copied from,
**if(nS1 != undefined){
data = []
data[0] = nS1;
var range = ss.getSheetByName("Sheet1").getRange(1,1);
range.setValues(data);
}
if(nS2 != undefined){
data = []
data[0] = nS1;
var range = ss.getSheetByName("Sheet2").getRange(1,1);
range.setValues(data);
}**
}
function checkForDup(item,s){
Logger.log(s+' = '+item[0]+' ?')
if(s.indexOf(item[0])>-1){
return null;
}
return item;
}
试试这个:
function removeDuplicate(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var mainsheet = ss.getSheetByName("Sheet1");
var sheet2 = ss.getSheetByName("Sheet2");
var sheet3 = ss.getSheetByName("Sheet3");
var masterData = mainsheet.getDataRange().getValues();
var sheetsToCheck = [sheet2,sheet3];
for(var i in sheetsToCheck){
var valuesToCheck = sheetsToCheck[i].getDataRange().getValues();
for(var j=0;j<valuesToCheck.length;j++){
for(var k in masterData){
if(masterData[k][0] == valuesToCheck[j][0] && !(masterData[k][1] == valuesToCheck[j][1])){
sheetsToCheck[i].deleteRow(j+1);
}
}
}
}
}
下面的代码来自这篇文章中关于将行值复制到新工作表(如果它存在于另一个工作表中)的答案。 现在,如果不是将重复值复制到第3页,而是要将它们从第1页和第2页中删除(如果在第3页中存在)。使用相同的电子表格,我有3张表格。将在前两张图纸上进行比较的唯一值是第一列“ID编号”。 给定所有3张表中存在的值,即784 | John Stiple | I.T Department,应删除表1和表2中的相同行值,
我正在寻找一种方法来迭代目录中的30个文件,并从他们删除基于其他文件中的id行。这些文件包含两列——ID和一个值,没有列名。另一个文件只包含一个应该删除的id(“id”)列(“ids_toberemoved”)。30个文件清理后,我想把它们导出到其他文件夹。 这是我目前掌握的情况: 我在迭代数据帧并用‘IDs _ tobe removed’连接它们的步骤中遗漏了一些东西,以便删除具有匹配id的行。
我有两张桌子,一张是给员工的,另一张是给部门的。一个部门可以有多个/不同的员工,但一个员工只能在一个部门工作。他们的关系是一对多。 表创建: 表插入:
问题内容: 内容: 我要从更改为。这是我的代码: 输出内容: 其他属性将被删除。我想更新一个特定的属性值,而不删除其他属性。 问题答案: 关闭输入流后,打开输出流并存储属性。
本文向大家介绍根据MySQL中其他两个列的值来匹配列的值,包括了根据MySQL中其他两个列的值来匹配列的值的使用技巧和注意事项,需要的朋友参考一下 让我们首先创建一个表- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记录- 这将产生以下输出- 以下是根据ID和MatchID显示FirstName的查询- 这将产生以下输出-
问题内容: 有没有一种方法可以根据行中包含的值删除行?例如,我有一个表,其中的值在包含URL值的一列中,例如, /uk/quitclock/om2.asp /uk/quitclock/om666.wav 在这里,我需要删除后缀为WAV,GIF或JPEG的行。我怎么做?如果不可能,那么excel中是否有任何公式可以帮助我做到这一点? 问题答案: 在数据库上尝试