<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />我一直试图找到一种方法来删除某些列中具有相同单元格但在其他列中没有的行。
例如,我想找到列PartNo,SerialNum和Site的值相同但不是Customer和Value的行。然后我想删除其中一行。在
在这种情况下,我将留下1,3和4行 - 见下文。
谢谢
| 部件号 | 序号 | 现场 | 顾客 | 值 |
|---|
| 1 | 2 | 3 | 一个 | 1.5 |
| 1 | 2 | 3 | b | 2 |
| 3 | 4 | 五 | C | 3 |
| 2 | 3 | 4 | d | 五 |
| 2 | 3 | 4 | Ë | 6 |
如果要通过脚本执行此操作,以下代码将显示仅保留重复行的第一个实例的示例。它利用了摘要表链接到详细信息表的事实。
//示例数据
DT1 = 打开 ( “$ SAMPLE_DATA / Big Class.jmp” ) ;
//哪些列用于定义重复项?
keyCols字段 = { “年龄” , “性别” } ;
//创建一个不可见的链接汇总表dt2
DT2 = DT1 << 摘要 ( 组 ( EVAL ( keyCols字段 )) ,无形 ) ;
//遍历dt2的行......
rows2Keep = [] ;
对于 ( [R = 1 , [R <= NROWS ( DT2 ) , [R ++,
// ...依次选择每一行
DT2 << SelectRows ({ [R }) ;
//在dt1中找到相应的行
duplicateRows = DT1 << GetSelectedRows ;
//只保留第一个
rows2Keep = VConcat ( rows2Keep , duplicateRows [ 1 ]) ;
//删除当前选择
DT2 << ClearSelect ;
) ;
关 ( DT2 , NoSave关 ) ;
//删除dt1中重复的行
rows2Delete = ( 1 :: NRow ( DT1 )) `;
rows2Delete [ rows2Keep ] = [] ;
DT1 << DeleteRows ( rows2Delete ) ;
你好,
您可以使用Join将表连接到自身,在Part No,Serial Num和Site列上进行匹配,并删除倍数。 以下是此案例的“加入”对话框的外观。
希望有所帮助!