[AHK]为Word增加求和热键,审计求和助手

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/liuyukuan/article/details/93921480

功能:实现对选中文字中的数字进行求和。

使用方法:选择目标文本,按alt+2 

补充说明:只提取带小数点的,忽略年份这类整数。

改进显示,直接在鼠标处显示, 提高对比效率!

;最新版本:https://blog.csdn.net/liuyukuan/article/details/93921480
;作者:sunwind 1576157@qq.com

#NoEnv
#SingleInstance,force
#Persistent
SetBatchLines, -1

!2::
clipboard =  ; 让剪贴板初始为空, 这样可以使用 ClipWait 检测文本什么时候被复制到剪贴板中.
Send ^c
ClipWait  ; 等待剪贴板中出现文本.

Haystack= %clipboard%

;清除英文逗号
StringReplace, Haystack, Haystack, `,,, All
Matches := RegExMatchGlobal(Haystack, "Ox)[-+]?[0-9]+\.[0-9]+")
;~ Result := ""
Result := 0
For I, Match In Matches
{
   Result +=Match.Value(0)
}
Result:=Round(Result,2)
TrayTip  % Matches.MaxIndex() . " 个数合计:", % Result
return

; ================================================================================​======================================
; Function: RegExMatchGlobal()
; Returns an array containing the overall match objects for NeedleRegEx in Haystack (see RegExMatch()).
; The option O (match object) will be added internally if needed.
; ================================================================================​======================================
RegExMatchGlobal(ByRef Haystack, NeedleRegEx) {
   Static Options := "U)^[imsxACDJOPSUX`a`n`r]+\)"
   NeedleRegEx := (RegExMatch(NeedleRegEx, Options, Opt) ? (InStr(Opt, "O", 1) ? "" : "O") : "O)") . NeedleRegEx
   Match := {Len: {0: 0}}, Matches := [], FoundPos := 1
   While (FoundPos := RegExMatch(Haystack, NeedleRegEx, Match, FoundPos + Match.Len[0]))
      Matches[A_Index] := Match
   Return Matches
}

 

展开阅读全文

没有更多推荐了,返回首页