精易论坛

标题: 表格内的删除重复项功能如何实现??? [打印本页]

作者: 周小杰来也    时间: 2025-1-26 15:56
标题: 表格内的删除重复项功能如何实现???
就这个功能  点进去之后可以依据条件删除重复项目  现在用的模块是LibXL3.9.0.ec  有没有例子


补充内容 (2025-1-26 15:57):
如果删除条件只是单独一列那还比较简单   但是如果条件是两列那就有点不懂

补充内容 (2025-1-26 21:50):

删除的时候需要知道索引  因为要把重复的整行删除


补充内容 (2025-1-26 21:55):
不管啥方法 直接扔个例子把大佬们
作者: 算法艺术家    时间: 2025-1-26 15:56
  
子程序名返回值类型公开备 注
Excel去重复整数型 删除全部重复列的行并返回删除数量
参数名类 型参考可空数组备 注
文件路径文本型
列索引数组整数型空为全部列参与去重,传入所有参与去重复的列索引 从0开始 ,例如0列和2列参与 { 0, 2 }
变量名类 型静态数组备 注
定位表格行整数型 
定位表格列整数型 
定位行组整数型0
总行数整数型 
总列数整数型 
bookXL工作簿类 
sheetXL工作表类 
i整数型 
局哈希哈希表_ASM 
去重列文本和文本型 
n整数型 
删除行索引组整数型0
参与列数量整数型 
删除数量整数型 
如果真 (取反 (book.打开文件 (文件路径)))
返回 (0)
sheet = book.选择工作表 (0)
总行数 = sheet.结束使用行 ()
总列数 = sheet.结束使用列 ()
局哈希.创建 ( #文本型, #整数型, 18)  ' 2的20次方除以1024 ' 256KB容量
参与列数量 = 取数组成员数 (列索引数组)
计次循环首 (总行数, i)
去重列文本和 = “”
判断 (参与列数量 = 0)
计次循环首 (总列数, n)
去重列文本和 = 去重列文本和 + sheet.取单元格文本 (到整数 (i - 1), n - 1)到文本 (n - 1)
计次循环尾 ()



计次循环首 (参与列数量, n)
如果真 (总列数 < 列索引数组 [n])
调试输出 (“错误:第”到文本 (列索引数组 [n])“列,欲去重复的列已超过总列数范围”)
到循环尾 ()

去重列文本和 = 去重列文本和 + sheet.取单元格文本 (到整数 (i - 1), 列索引数组 [n])到文本 (列索引数组 [n])
计次循环尾 ()

判断 (局哈希.cha询 (去重列文本和))
局哈希.添加 (去重列文本和, 0)
加入成员 (删除行索引组, i)

计次循环尾 ()
局哈希.清空 ()
删除数量 = 取数组成员数 (删除行索引组)
计次循环首 (删除数量, i)
sheet.删除行 (删除行索引组 [i] - 1)
计次循环尾 ()
book.保存文件 (文件路径)
返回 (删除数量)


i支持库列表   支持库注释   
spec特殊功能支持库


作者: 算法艺术家    时间: 2025-1-26 16:20
分三步,先把两列相加,然后把重复的行索引放进数组,最后删除它们
作者: 算法艺术家    时间: 2025-1-26 16:31
相加再比较 或者比较两次
作者: 走一回    时间: 2025-1-26 19:42
可以加入节点,有重复的就不会加入
作者: 熬夜    时间: 2025-1-26 20:16
https://125.confly.eu.org/forum.php?mod=viewthread&tid=14499565
作者: f15007937680    时间: 2025-1-26 21:03
节点很好用

作者: 周小杰来也    时间: 2025-1-26 21:50
删除的时候需要知道索引  因为要把重复的整行删除
作者: 算法艺术家    时间: 2025-1-26 23:18
哈希表_ASM 是论坛里开源的模块
作者: 算法艺术家    时间: 2025-1-26 23:49
写了半个多小时 应该是没BUG




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4