平时在使用ClipDairy作为剪贴板管理功能,能非常方便的对固定内容进行管理。现在有了新的需求,对Excel公式进行管理,部分Excel公式很长,涉及到的变量较多,希望能有一款软件支持变量,方便的对公式中的变量进行替换。
例如:动态序号的公式
SUBTOTAL(3,$D$1:D2)-1
可以直接输入两个变量值替换掉$D$1及D2,当然能针对Excel的引用进行优化,根据公式形式自动锁定行列就更好了(比如我输入E1,E2;可以直接根据格式转换为SUBTOTAL(3,$E$1:E2)-1)。
这个举例比较简单,在实际应用场景会遇到很长的公式,包含的变量及其变形会更多。
dawn
2
这个也许可以?相关的功能我没用过,当初试用发现他连合并粘贴功能都没有就没用了
dog
3
这个用autohotkey来处理会非常方便。
效果相当于excel函数。
一个简单的例子:
-
假设我要简化这个公式
-
通过ahk自定义函数
瞎几把(x1,x2)
等价于 SUM(x1:x2)*8+5+x1-x2
-
就像普通函数一样输入“=瞎几把(A1,A2)”,按下自定义快捷键,autohotkey自动把“瞎几把”函数给你转换回去。
- 要是忘了自定义函数有几个参数,各是什么意思,还可以一键调出提示,就像excel原生函数一般。
ahk代码,快捷键是shift f2 和 shift f1
#SingleInstance Force
#IfWinActive ahk_exe EXCEL.EXE
+f2::
{
clipboard:=""
Send ^a
Send ^c
ClipWait,2
RegExMatch(clipboard, "(?<=[=]).+?(?=[(])", head)
RegExMatch(clipboard, "(?<=[(]).+(?=[)])", vars)
x := StrSplit(vars, "`,")
switch head
{
case "瞎几把":{
msg := f瞎几把(x[1],x[2])
}
case "你随便写":{
msg := f你随便写(x[1],x[2],x[3],x[n])
}
Default:
ToolTip,%msg%,,
}
Send,{text}%msg%
Send,{Enter}
return
}
+f1::
{
Send ^c
switch Clipboard
{
case "瞎几把":{
msg =%Clipboard%(左上角坐标,右下角坐标),功能是演示
ToolTip,%msg%,,
}
case "你随便写":{
msg =%Clipboard%(左上角坐标,右下角坐标),功能是演示
;把(左上角坐标,右下角坐标),功能是演示 改成你自己的函数描述
ToolTip,%msg%,,
}
Default:
ToolTip,%msg%,,
}
return
}
f瞎几把(A1,D2)
{
theoutput==SUM(%A1%:%D2%)*8+5+%A1%-%D2%
return theoutput
}
f你随便写(A1,D2,C3,G5)
{
theoutput==SUM(%A1%:%D2%)*8+5+%A1%-%D2%
;把 SUM(%A1%:%D2%)*8+5+%C3%-%G5% 换成你的公式,记得加两个%
return theoutput
}
dog
4
新增自定义函数,需要手动增改这几处
【当然,新增自定义函数的自动化程度还可以进一步提高。不过嘛,得加钱(狗头)】
函数名(你随便写)可以换成 字母数字下划线汉字的组合。
函数的参数,有几个就写几个,分别写x[1],x[2],x[3],……x[n]
这段是提示语
这段是函数本身,给原本公式里需要变动的参数前后加上百分号