水晶报表位置公式_Excel根据公式说明计算数值

本文介绍了如何在Excel中创建自定义函数,使得单元格的公式说明能直接用于计算,无需在目标单元格重新设置公式。通过VBA编程,创建JSSS和ZJS两个函数,实现根据指定单元格的公式说明进行计算,并处理包含括号、加减乘除等复杂公式的计算。这种方法极大地方便了报表中数值的动态更新和公式管理。
摘要由CSDN通过智能技术生成

有时候,在报表中需要对一个数值的计算公式进行说明,以展示该数据是如何得来的。当然可以先设置数据的公式,然后在粘贴到说明单元格内。但是还有更加方便的做法,就是只需修改说明单元格内的公式,数值就根据该公式相应改变。

例如:

6fd2dbbc7cc736beae02b0bf8311f7bf.png

A1单元格显示数值6,其公式为2*3,其公式说明在B1单元格内展示。那么如何使得A1单元格内的数值根据B1单元格内书写的公式说明变化呢?不用在A1重新设置公式。

1、首先选中A1单元格,必须要选中。

2、依次点击菜单“公式”、“定义名称”。

80b500f613d4782646ba3e6f4e06c549.png

3、在弹出的窗口中“名称”和“引用位置”内输入以下内容,然后“确定”。

“名称”这里输入的是JS,也可以输入别的名称,只是需要记住,以便后面引用。

“引用位置”只能手工输入,单元格位置中没有“$”符号。

536dd5455e9470a7c572b90c898e2a66.png

4、在A1单元格中输入“=JS”,这里相当于我们定义了一个以JS为名称的函数。

7cea5044d4eab75259bb858a0dfb8600.png

虽然在第3步,我们只输入了B1,但是该公式是可以往下拖动的,加减乘除毫无问题。A2对应B2,A3对应B3。

但是如果在C1输入“=JS”则会等于D1中公式的值。这就是一开始选中A1单元格的重要性。

61abd9ecf9ca0f25fc8d21dd83551f77.png

但是我们的报表常常像下面这样,在C列金额均等于B2单元格的单价乘以B列相应的数量。公式这时用字母表示更清晰。

87f4f1631110802ee371a5b50fcdb7e8.png

你会发现用刚才的办法,先选中C5单元格,定义一个名称依然有效。

当然我们也发现了前面做法的缺陷就是有对应位置的关系,比如刚才的C1单元格输入“=JS”时就不会等于B1单元格所列公式的值。

a3b23e096173199ad0acfeb2940ae1fc.png

那么,能不能像真正的函数一样,我应用哪个单元格就计算该单元格公式的值呢?显然,也是可以的。

1、首先“Alt+F11”,调用代码编辑窗口。然后右键点击VBAProject,选择插入“模块”。

c29c6a603f7f5876a105992d7e4216f8.png

2、双击新建的模块(列如模块1),在右边的窗口中输入以下内容:

Function JSSS(A)

A=A

JSSS = Evaluate(A)

End Function

如下图:中“JSSS”就是我们真正自定义的函数了,可以像其他Excel函数一样使用。其中"A=A”是千万不能省略的。

b2b220972e83a069bb8259fb50ffd8f6.png

3、B11单元格中输入公式“=JSSS(D5)”,其中D5可以像其他函数一样点击D5单元格来引用,因为JSSS现在真的就是一个函数了。

1720adf8f3befd44eaaec90070d1cc61.png

然而还有的时候,我们会这样来写一个数值的计算说明,公式中会带有计量单位。

b6703550995bfcccda4dd1d6a77db21f.png

计算公式是:(71.1*5+100*10-100)*5/7,其中包含了括号、加减乘除。

这个稍微复杂一点,但是依然可以简单搞定。

我们可以用“Alt+F11”调出代码窗口,在新插入的模块或原有的模块中写入下面的代码:

Function ZJS(A)

Dim b, mhk, mh

Dim dy, dys

Set dy = CreateObject("vbscript.regexp")

With dy

.Global = True

.IgnoreCase = True

.Pattern = "(d|[*+-.()()]|[/]d)"

End With

Set mh = dy.Execute(A)

For Each mhk In mh

dys = dys & mhk

Next

ZJS = Evaluate(dys)

End Function

如图:

548109cbf44ba1cb40252f1eae2fb881.png

其中ZJS就是我们定义函数的名称。

在B1单元格输入公式“=ZJS(A1)”就会得到A1中数值运算的结果。

7c9e03117507fc5da6f2aee4dd6bdfb0.png

最后需要注意的是,在使用了模块之后,Excel必须启用宏。


d119836ffcd7378094cd8f286d512ee8.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值