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

105 篇文章 5 订阅
92 篇文章 3 订阅

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

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

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

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

[使用截图]Word文档文字中的数据求和

[使用截图]Word文档表格中的数据求和

[用户反馈]


#NoEnv
#SingleInstance,Force
#Persistent
CoordMode, Mouse, Screen
SetBatchLines, -1
;最新版本:https://blog.csdn.net/liuyukuan/article/details/93921480
;作者:sunwind 1576157@qq.com
;时间:2019年6月27日22:55:33
;使用方法:选择目标文本,按alt+2 

;说明:
;只提取带小数点的,忽略年份这类整数。
;输出的求和数值带上千分号
!2::
clipboard =  ; 让剪贴板初始为空, 这样可以使用 ClipWait 检测文本什么时候被复制到剪贴板中.
Send ^c
ClipWait, 2
if ErrorLevel
{
    ToolTip 请重新选择文本区域
    return
}
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)
Result:=CommaAdd(Result)
;~ TrayTip  % Matches.MaxIndex() . " 个数合计:", % Result
showtext(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
}

CommaAdd(num) {
LOCALE_USER_DEFAULT = 0x400
ffl = 64
VarSetCapacity(ff, ffl)
DllCall("GetNumberFormat"
		, "UInt", LOCALE_USER_DEFAULT ; LCID Locale
		, "UInt", 0 ; DWORD dwFlags
		, "Str", num ; LPCTSTR lpValue
		, "UInt", 0 ; CONST NUMBERFMT* lpFormat
		, "Str", ff ; LPTSTR lpNumberStr
		, "Int", ffl) ; int cchNumber
return ff
}

;文字提示  ;在桌面上打印文字的
showtext(str)
{
   ;~ WinGetActiveStats, Title, Width, Height, X1, Y1
;~  ;;y is the y-coordinate of the prompting window
MouseGetPos,x,y
x:= x - 16
y:= y - 20
Gui,Destroy
Gui,+AlwaysOnTop +Disabled -Caption -SysMenu +Owner +LastFound
WinGet,hwnd,ID

Gui, font, s11 c000000 w600, 宋体    ;黑色宋体字11磅
Gui, Color, FFFFFF
WinSet, TransColor, FFFFFF
Gui,Add,Text,BackgroundTrans,%str%
Gui, Show, NoActivate X%x% Y%y% NA, Title of Window
Sleep,3500
Gui,Destroy
}

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值