Gui, Add, Button, x0 y0 w100 h20 ga, 粘贴数据A(少) Gui, Add, Button, x100 y0 w100 h20 gb, 粘贴数据B(多) Gui, Add, Button, x200 y0 w100 h20 gc, 提交 Gui, Add, text, x0 y20 w300 h20, 选择筛选关键字段 Gui, Add, DDL, x0 y40 w300 vkey, Gui, Add, text, x0 y60 w300 h20, Gui, Add, Edit, x0 y80 w300 h200 vshow, Gui, Add, StatusBar, x0 y280 Gui, Show, , Excel追加数据提取(去重) return a: data_a := StrSplit(Clipboard,"`n","`r") ;按行分割成数组 SB_SetText("数据A粘贴成功!") x := StrSplit(data_a[1],"`t") ;获取字段 y = for k,v in x y .= v ? "|" k "_" v : "" GuiControl,, key, % y return b: data_b := StrSplit(Clipboard,"`n","`r") SB_SetText("数据B粘贴成功!") return c: SB_SetText("") GuiControlGet, key if !key { MsgBox, 4112, 错误, 未选择关键字段 return } d := StrSplit(key,"_") ;获取关键字段id key_num := d[1] SB_SetText("生成数据A哈希") hash_a := [] for k,v in data_a { if A_index>1 { if RegExMatch(v,"^[A-Za-z0-9]+$") ;纯数字字母组合直接加入提高效率 hash_a["" v] := A_Index ;加""强制转成文本 else ;复杂值获取MD5 hash_a[MD5(StrSplit(v,"`t")[key_num],"CP0")] := A_index } } SB_SetText("生成数据B哈希") hash_b := [] for k,v in data_b { if A_index>1 { if RegExMatch(v,"^[A-Za-z0-9]+$") hash_b["" v] := A_Index else hash_b[MD5(StrSplit(v,"`t")[key_num],"CP0")] := A_index } } out := data_a[1] SB_SetText("去重") for k,v in hash_b { if !hash_a[k] ;数据A中不存在此关键字段值 out .= "`n" data_b[v] } GuiControl, , show, % out Clipboard := out SB_SetText("完成,结果已复制到剪切板") data_a:="",data_b:="",hash_a:="",hash_a:="",x:="",y:="",key_num:="",out:="" GuiControl, , key, | return GuiClose: ExitApp
62 queries in 2.243 seconds |