Excel VBA程序开发

longjufeng Lv.1

关注
我有这样一个嵌套公式,SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(D5,"{","("),"}",")"),"[","*ISTEXT(""["),"]","]"")"),"【","*ISTEXT(""【"),"】","】"")"),如何把它变为一个自定义函数,我完全是小白,每次都需要复制进入单元格,实在太麻烦,不便于使用。因为长期进行土木方面的工程量计算,天天都要使用到,能不能麻烦那位大佬,帮帮小弟,弄成自定义函数,简单的VBA我还是会点。就是这个公式的运算逻辑不知道,公式网上搜的。
986阅读
10回复 倒序

Enocheasty Lv.2 2楼


把这个公式拆成一步一步了,就是文本替换,用VBA写很简单的。你会点VBA应该很容易能写的。
屏幕截图 2024-02-27 101901.png

sj15627581616 Lv.4 3楼

定义名称可以完成你的需求,可以不需要VBA做自定义函数
image.png

limonet Lv.6 4楼

image.jpg

limonet Lv.6 5楼

如要修改,就改对应的字符。

TextTm.zip   2024-2-27 11:06 上传

12.65 KB, 下载次数: 9

准提部林 Lv.7 6楼

Function EvText(xString$, VV%)
Dim x, i%, C%, T1$, T2$
For Each x In Array("{(", "})", "【[", "】]")
    xString = Replace(xString, Left(x, 1), Right(x, 1))
Next x
For i = 1 To Len(xString)
    T1 = Mid(xString, i, 1)
    If T1 = "[" Then C = 1: GoTo 101
    If T1 = "]" Then C = 0: GoTo 101
    If C = 0 Then T2 = T2 & T1
101: Next
EvText = IIf(VV = 0, Evaluate(T2), "=" & T2)
End Function

VV=0...直接計算
VV=1...給出不含註解文字的計算式(減少計算式文字長度)

longjufeng 楼主 7楼

引用: Enocheasty 发表于 2024-2-27 10:20
把这个公式拆成一步一步了,就是文本替换,用VBA写很简单的。你会点VBA应该很容易能写的。

试图拆解了几次,搞了几天,总是错,实在天天上班摸鱼弄这个,有点不好啥意思了。谢谢你

准提部林 Lv.7 8楼

引用: longjufeng 发表于 2024-2-29 14:29
试图拆解了几次,搞了几天,总是错,实在天天上班摸鱼弄这个,有点不好啥意思了。谢谢你

以前做的範例//

20240229eh01.rar   2024-2-29 16:07 上传

9.64 KB, 下载次数: 6


longjufeng 楼主 9楼

引用: 准提部林 发表于 2024-2-29 16:08
以前做的範例//

感谢大佬,感谢

longjufeng 楼主 10楼

引用: limonet 发表于 2024-2-27 11:06
如要修改,就改对应的字符。

感谢感谢,十分感谢
加载更多