功能:实现对选中文字中的数字进行求和。
使用方法:选择目标文本,按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
}