在UFO中,由于各种报表之间存在着密切的数据间的逻辑关系,所以报表中各种数据的采集、运算和勾稽关系的检测就用到了不同的公式,主要有计算公式、审核公式和舍位平衡公式。本节主要介绍UFO的计算公式。
一、计算公式的功能
计算公式是报表数据的一个重要组成部分。对于财务报表,报表中的数据可能有不同的来源:
(1)有些数据需要手工输入,例如在资产负债表中直接输入各项目的数据。
(2)有些数据是由其他报表项目运算得到的,例如“固定资产净值”、“所有者权益合计”、“税后利润”等项目。
(3)有些数据是从其他报表中取来的,例如“期末未分配利润”项目。
(4)有些数据可以从账务系统中直接提取。
除了手工输入的数据,其他数据都需要通过定义计算公式来得到。通过计算公式来组织报表数据,既经济又省事,把大量重复、复杂的劳动简单化了。合理地设计计算公式能大大地节约劳动时间,提高工作效率。
计算公式可以直接定义在报表单元中,这样的公式称为“单元公式”。UFO允许在报表中的每个数值型、字符型的单元内,写入代表一定运算关系的公式,用来建立表内各单元之间、报表与报表之间或报表系统与其他系统之间的运算关系。描述这些运算关系的表达式,就可称之为单元公式。
二、单元公式的格式
单元公式的书写规则如下:
<目标区域>=<算术表达式>
(1)目标区域。是用户选取的、单元公式所赋值的单元或区域。
(2)算术表达式。用来确定单元公式的数据来源和运算关系。算术表达式中可以使用单元引用、数值、字符、运算符、函数等。
三、算术运算符
算术运算符是在描述运算公式时采用的符号,UFO可使用的算术运算符及运算符的优先顺序如表4-2:
表4-2 算术运算符顺序表
顺序
金额
金额
1
∧
平方
2
* 、/
乘、除
3
+、-
加、减
四、算术表达式
算术表达式是由运算符、区域和单元、常数、变量、关键字、非逻辑类函数表达式的组合,其结果为一个确定值。算术表达式又分为单值和多值算术表达式。单值算术表达式的结果为一个数值,也可为一个单纯的常数,可将其赋值给一个单元。多值算术表达式的结果为多个数值,可将其运算结果赋值给多个单元。
(1)单值算术表达式。例 C1=10;C2=A1+B1。
(2)多值算术表达式。例如,C1:C10=A1:A10+B1:B10(表示 C1=A1+B1,C2=A2+B2,…,C10=A10+B10);61:C10=100(表示C1=100,C2=100,…,C10=100)。
五、单元公式举例
(l)A1=l000。←对于所有表页,给A1单元赋值为 1000。
(2)C1=A1×B1。对于所有表页,C1单元的值等于A1单元的值和B1单元的值的乘积。
(3)D10=PTOTAL(D1:D9)。对于所有表页,D10单元的值等于D1单元到D9单元的值的总和。
(4)E10=“累计”。对于所有表页,E10单元的值为字符“累计”。
十一、函数概述
按照函数的用途不同,函数又分为账务函数、其他业务系统取数函数、统计函数、数学函数、日期时间函数、本表他页取数函数等等。下面举例说明常用函数的用法。图4-13 公式列表对话框
1. 账务函数账务函数通常用来采集总账中的数据,因此使用的较为频繁。常用账务取数函数见表4-3所示。
函数名
中文函数名
函数定义
DFS
对方科目发生
取对方科目发生数
FS
发生
取某科目本期发生数
HL
汇率
取汇率
JE
净额
取某科目借、贷方发生净额
LFS
累计发生
取某科目累计发生额
QC
期初
取某科目期初数
QM
期末
取某科目期末数
SDFS
数量对方科目发生
取对方科目数量发生数
SFS
数量发生
取某科目本期数量发生数
SJE
数量净额
取某科目借、贷方数量发生净额
SLFS
数量累计发生
取某科目累计数量发生额
SQC
数量期初
取某科目数量期初数
SQM
数量期末
取某科目数量期末数
STFS
数量条件发生
取符合指定条件的发生数
TFS
条件发生
取符合指定条件的发生数
WDFS
外币对方科目发生
取对方科目外币发生数
WFS
外币发生
取某科目本期外币发生数
WJE
外币净额
取某科目借、贷方外币发生净额
WLFS
外币累计发生
取某科目外币累计发生额
WQC
外币期初
取某科目外币期初数
WQM
外币期末
取某科目外币期末数
QTFS
外币条件发生
取符合指定条件的外币发生数
例如:在C5单元取999账套501科目的本月贷方发生额。以单元公式形式为例,步骤为:
(1) 在格式设计状态,单击C5单元。
(2)输入“=”或单击“fx” 图标,出现定义公式对话框。
(3)在定义公式对话框中,单击【函数向导】按钮,出现函数向导对话框。
(4)在函数向导对话框中的函数分类列表框中,选择【账务函数】,在函数名列表框中,选择【发生】,单击【下一步】按钮,出现用友账务函数对话框。
(5)在用友账务函数对话框中,单击【参照】按钮,出现账务函数对话框。
(6)在账务函数对话框中,选择账套号:999、科目:501、期间:月、会计年度:默认、方向:贷及辅助核算项目编码,最后单击【确定】,返回用友账务函数。
(7)在用友账务函数对话框中,单击【确定】返回。
(8)在定义公式对话框中,最终形成公式“C5=F5(“501”,月,“贷”,999,,),确定。
(9)在C5单元格内显示“单元公式”字样,在公式栏中显示C5单元的公式定义。
2. 统计函数
统计函数一般用来做报表数据的统计工作,常用统计函数如表4-4:
函数
固定区
可变区
立体方向
合计函数
PTOTAL
GTOTAL
TOTAL
平均值函数
PAVG
GAVG
AVG
计数函数
PCOUNT
GCOUNT
COUNT
最小值函数
PMIN
GMIN
MIN
最大值函数
PMAX
GMAX
MAX
方差函数
PVAR
GVAR
VAR
偏方差函数
PSTD
GSTD
STD0
例如:在C9单元取本表页C5到C8单元的和。以单元公式形式为例,步骤为:
(1)在格式设计状态,单击C9单元。
(2)输入“=”或单击“fx” 图标,出现定义公式对话框。
(3)在定义公式对话框中,单击【函数向导】按钮,出现函数向导对话框。
(4)在函数向导对话框中的函数分类列表框中,选择【统计函数】,在函数名列表框中,选择【PTOTAL】,单击【下一步】按钮,出现固定区统计函数对话框。
(5)在固定区统计函数对话框的固定区区域文本框中输入:C5:C8,如果有筛选条件,在筛选表达式文本框中输入筛选条件,单击【确定】,返回定义公式对话框。
(6)在定义公式对话框中,最终形成公式“ C9=PTOTAL(C5:C8)”,确定。
(7)在C9单元格内显示“单元公式”字样,在公式栏中显示C9单元的公式定义。
3.本表他页取数函数
本表他页取数函数用于从同一报表文件的其他表页中采集数据。很多报表数据是从以前的历史记录中取得的,如本表其他表页。当然,这类数据可以通过查询历史资料而取得,但是,查询既不方便,又会由于抄写错误而引起数据的失真。而如果在计算公式中进行取数设定,既减少工作量,又节约时间,同时数据的准确性也得到了保障。这就需要用到表页与表页间的计算公式。
(1) 取确定页号表页的数据。当所取数据所在的表页页号已知时,用以下格式可以方便地取得本表他页的数据:
<目标区域>=<数据源区域> @<页号>
例如:下面单元公式令各页B2单元均取当前表第一页C5单元的值。其表示如下:
B2= C5@1
(2)按一定关键字取数。SELECT()函数常用于从本表他页取数计算。
例如:在“损益表” 中,累计数 = 本月数+同年上月累计数,表示为:
D=C+SELECT (D,年@=年and月@=月+1)
4. 从其他报表取数计算
当从他表取数时,已知条件并不是页号,而是希望按照年、月、日等关键字的对应关系来取他表数据,就必须用到关联条件。在进行报表与报表间的取数时,不仅仅要考虑取哪一个表哪一个单元的数据,还要考虑数据源在哪一页。例如,5月份的资产负债表中的利润,需要去傲利润表中5月份的利润数据,假如利润表中存在其他月份的数据,而不存在5月份的数据,那么《资产负债表》绝对不应该将其他月份的数据取出来,报表间的计算公式就是要保证这一点。报表间的计算公式与同一报表内各表页间的计算公式很相近,主要区别就是把本表表名换为他表表名。报表与报表间的计算公式分为:取他表确定页号表页的数据和用关联条件从他表取数。
(1)取他表确定页号表页的数据。用以下格式可以方便地取得已知页号的他表表页数据:
<目标区域>=“<他表表名>”→ <数据源区域> [@ <页号> ]
当<页号>缺省时为本表各页分别取他表各页数据。下面就该格式举一些例子。
①取他表数据。令当前表页D5的值等于表“Y”第4页D5的值:D5=“Y”→D5@4;令本表各页D5的值等于表“Y”各页D5的值:D5=“Y”→D5 FOR ALL;令当前表所有表页 C5的值等于表“Y”第 1页中C10 的值与表“Y”第2页中C2的值之和:C5=“Y” →C10@1+“Y”-C2@2
②取他表及本表的数据。令当前表所有表页C5的值等于表“Y”第1页中C10的值与当前表第2页中C2的值之和:C5=“Y”→C10@l+C2@2。
③取其他两个表的数据。当前表 C1>0的表页 D5的值等于表“Y”第1页中 H20的值与表“X”第2页中F4的值之和:D5=“Y”→H20@l+“X”→E4@2 FOR C1>0。
④可变区公式。在命令窗或批命令中,令当前可变表 C1>0的表页V_D的值等于表“Y”第1页中V_H的值与表“X” 第2页中V_L的值之和:LET V_D =“Y”→V_H@l+“X”→V_L@2 FOR C1>0。
(2)用关联条件从他表取数。当从他表取数时,已知条件并不是页号,而是希望按照年、月、日等关键字的对应关系来取他表数据,就必须用到关联条件。表页关联条件的意义是建立本表与他表之间以关键字或某个单元为联系的默契关系。从他表取数的关联条件的格式为:
RELATION <单元|关键字|变量|常量>WITH“<他表表名>”→<单元|关键字|变量|常量>
具体用法我们以例子说明。例如:A1=“FYB”→A1 FOR ALL RELATION月WITH“FYB”→月,意义为取FYB表的,与当前表页月相同月的A1单元的值。如果当前表页为9月,则取FYB表9月表页A1的值;A=“LRB”→BRELATION月 WITH “LRB” →月十1,意义为令本表各页A列取表“LRB”上月各页 B列数值;A=“LRB”→A RELATION年 WITH“LRB”→年,月WITH“LRB”→月+l, 意义为令当前表各项A列取表“LRB” 同年上月A列数值;A=“LRB”→B FOR ALL RELATlON 1 WITH “LRB”→月,令当前表各页A列取表“LRB”1月B列数值;A=“LRB”→B+“ZJB”→C RELATION年 WITH“LRB”→年,月WITH“LRB”→月,年WITH“ZJB”→年,月WITH“ZJB”→月,令当前表各页A列取表“LRB” 同年上月表页B列数值及表“ZJB”上一年相同月份表页C列数值之和。
十二、计算公式的编辑
在UFO中,编辑计算公式有3种方式:单元公式方式、命令行方式和批处理方式。
1.单元公式方式
单元公式方式在格式设计状态中定义,存储在报表单元中,切换到数据处理状态时,单元公式将自动进行运算,也可以随时使用菜单【数据】中的【整表重算】命令驱动报表中所有单元公式进行重算。
不需再计算时,可以点取屏幕上方的【不计算】按钮,本表页以后不再重算。要重新计算,再次点取【不计算】按钮即可。当本表单元公式中涉及到其他表或其他系统数据时,必须“整表重算”后才能更新数据。
2.命令行方式
在数据处理状态下,选择【文件】菜单中的【命令窗】,在报表工作区下面就会显示命令窗窗口,在命令窗中一条一条书写要执行的命令,按回车立即计算。
与定义单元公式不同的是,在命令宣中书写的命令应以LET语句开头。如定义 C6单元为 C4和 C5单元之和,应键人:LET C6=C4+C5。
3.批处理方式
在数据处理状态下,选择【文件】菜单下的【二次开发】,选择文件类型为批处理 (SHL文件),在二次开发窗口中一次性编辑所要执行的命令,保存时,可以由用户自己定义文件名,最后选择【文件】菜单中的【执行】,即可完成批量计算。
计算公式在命令窗和批命令中的格式特点是;以LET引导计算公式;一个计算公式可以为若干个筛选条件、关联条件相同的区域赋值,各赋值表达式间以逗号“,”分隔。
在可变区中不能定义单元公式,要计算可变区的内容,可以在命令窗或批命令中定义可变区公式。例如:LET V-C=(V-A)×(V-B)。