Thinkai's Blog

Autohotkey|Python|php|aardio|VOIP|IT 爱好者

Excel追加数据提取(去重)Autohotkey 3937

作者为 发表

Autohotkey

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

获取完整版


来了就留个评论吧! 1个评论




友情链接:Autohotkey中文帮助Autohotkey官网Autohotkey中文网联系作者免GooglePlay APK下载

 主题设计 • skyfrit.com  Thinkai's Blog | 保留所有权利

60 queries in 2.185 seconds |