会计科目表是利用Excel进行会计电算化工作的基础工作表,其中的会计科目编码、会计科目名称等项目对根据科目编码自动生成科目名称、汇总科目发生额、报表数据采取等会计数据处理的准确高效起着至关重要的作用。因此,在科目编码录入前,根据财政部关于科目编码的有关规定、会计电算化工作规范的要求进行数据有效性条件设置,在数据进入系统前进行必要的逻辑检查,禁止录入违反数据有效性条件的非法数据就显得尤为重要。
1 科目编码位数的录入控制
会计电算化方式下,需要确定满足企业核算要求的会计科目编码方案,如433、4222等,要求录入的数据位数符合编码方案要求,科目编码方案一旦确定,允许录入的位数就已确定。为有效防止录入位数的差错,可通过设置单元或区域的数据有效性条件,达到只允许录入符合编码方案长度要求的会计科目编码的目的。为叙述方便,本文科目编码方案采用4222,这也是当前多数中小企业采用的科目编码方案,具有普遍性。
1.1 用列举法构造位数控制有效性条件
按4222编码方案的要求,录入的科目编码只能是4位、6位、8位或10位。条件描述语句为:or(len(科目编码单元)=4,len(科目编码单元)=6,len(科目编码单元)=8,len(科目编码单元)=10)首先列举出符合编码方案要求的所有条件:(1)len(科目编码单元)=4;(2)len(科目编码单元)=6;(3)len(科目编码单元)=8;(4)len(科目编码单元)=10.将这些条件用逻辑或函数进行运算,确保任一列举情况出现均可录入科目编码。
1.2 用描述法构造位数控制有效性条件
按4222编码方案的要求,输入的科目编码只能在4-10位之间,且编码长度必须能被2整除。条件描述语句为:
and(len(科目编码单元)>=4,len(科目编码单元)<=10,mod(len(科目编码单元),2)=0)“len(科目编码单元)>=4”表达式控制录入的科目编码不能少于4位;“len(科目编码单元)<=10”表达式控制录入的科目编码不能多于10位;而“mod(len(科目编码单元),2)=0”表达式控制录入的位数能被2整除(检测录入的位数是否为偶数)。将三个条件表达式用函数and进行逻辑与运算,确保只有同时满足三个条件,才能录入科目编码。
2 科目编码录入的唯一性控制
录入的科目编码必须具备唯一性,这意味着在科目编码区域中不能出现相同的数据,如果统计任一单元数据出现次数的话,最多只能出现一次,条件计数函数可实现这一控制要求。条件描述语句为:
countif(科目编码区域,科目编码单元)=13 科目编码第一位字符的控制。
财政部规定,会计科目编码的第一位表示科目类别,用字符“1”、“2”、“3”、“4”、“5”、“6”分别表示“资产类”、“负债类”、“共同类”、“所有者权益类”、“成本类”、“损益类”科目,因此,在录入会计科目编码时,还需检测第一位是否为上述六个字符之一。若是,则接受录入,否则系统应拒绝录入的数据。
3.1 用列举法构造第一位字符控制的有效性条件
录入科目编码的第一位只能是1-6之间的字符,用列举法的条件描述语句为:
or(left(科目编码单元,1)=“1”,left(科目编码单元,1)=“2”,left(科目编码单元,1)=“3”,left(科目编码单元,1)=“4”,left(科目编码单元,1)=“5”,left(科目编码单元,1)=“6”)“left(科目编码单元,1)”表达式用left函数取出科目编码最左边的第一位,然后与财政部规定的科目编码第一位有效字符“1”、“2”、“3”、“4”、“5”、“6”进行比较运算,检测是否符合要求;or函数确保只要其中某一表达式值为真,便可录入科目编码。
3.2 用描述法构造第一位字符控制的有效性条件
取出编码第一位后,检测是否在字符1-6之间,可以用以下三种方法之一进行有效性条件描述。
3.2.1 用字符比较构造条件
描述语句将取出的第一位文本型字符与财政部规定的有效字符“1”到“6”进行比较,检测是否符合规定,条件描述语句为:and(left(科目编码单元,1)>=“1”,left(科目编码单元,1)<=“6”)a n d 函数确保会计科目编码第一位是字符 “ 1 ” 到“6”之间的字符。
3.2.2 用数值比较构造条件描述语句
因用left函数取出的是文本型数据,若让其与有效数值1,2,3,4,5,6进行比较运算,则需将取出的第一位文本型数据用value函数转换为相应的数值后再进行比较,条件描述语句为:and(value(left(科目编码单元,1))>=1,value(left(科目编码单元,1))<=6)用数值比较构造条件描述语句与用字符比较构造条件描述语句的不同之处在于:前者比较的是文本,后者比较的是数值。
3.2.3 用数字字符的十进制ACSII码值比较构造条件描述语句
另外,还可以借助code函数求出会计科目编码第一位数字字符的十进制ACSII码值,检测是否在49-54之间,条件描述语句为:and(code(left(科目编码单元,1))>=49,code(left(科目编码单元,1))<=54)4 反映科目统驭关系的上下级编码定义控制。
在定义会计科目编码时,除进行编码长度、编码唯一性及第一位字符控制外,还必须进行上下级科目编码统驭关系的录入控制,即上级科目编码未定义,下级科目编码不能定义。在4222科目编码方案条件下,除一级科目外,下级科目编码长度比上级科目编码长度少2,也即上级科目编码长度等于下级科目编码长度减去2,用语句表示为“上级科目编码长度=len(科目编码单元)-2”,进而可知“上级科目编码=left(科目编码单元,len(科目编码单元)-2)”.
在录入除一级以外的会计科目编码时,必须先检测是否已定义了上级科目。检测方法是:在已定义的科目编码中统计出“本级科目编码的前‘本级科目编码长度-2’”位数据出现的次数是否等于1,如果等于1,说明已定义了上级科目,如果不等于1说明上级科目没有定义,在上级科目没有定义时是不能定义下级科目的。
不等于1说明上级科目编码未定义的理由是:在未作任何限制的条件下,countif函数的统计结果有0、1和大于1三种可能,如果统计结果为0说明没有出现,也就是没有定义;如果是1,表明定义了一个;如果大于1,说明定义了不止一个。而大于1是不可能的,因为科目编码的唯一性控制设置确保了不出现重复的科目编码,所以只可能出现0和1两种可能。
据此,要实现上级编码未定义,下级科目编码不能定义的有效性条件设置应检测以下两方面的内容:
一是录入的科目编码长度是否为4位。若是4位,说明录入的编码是一级科目编码,一级科目编码是不需检测是否定义了上级的,所以在符合其他条件的情况下,可以录入。条件描述语句为:
len(科目编码单元)=4二是录入的科目编码的上级编码必须已经存在。若存在,可以录入,若不存在,则不能录入。条件描述语句为:
countif(科目编码区域,left(科目编码单元,len(科目编码单元)-2))=1上述两个条件的检测只要符合其中之一便可录入。
综合起来,反映科目统驭关系的上下级编码定义控制条件描述语句为:
or(len(科目编码单元)=4,countif(科目编码区域,left(科目编码单元,len(科目编码单元)-2))=1)综合上述四个方面的数据有效性条件描述语句,构造的会计科目编码录入有效性条件公式为:
=and(and(len(科目编码单元)>=4,len(科目编码单元)<=10,mod(len(科目编码单元),2)=0),countif(科目编码区域,科目编码单元)=1,and(code(left(科目编码单元,1))>=49,code(left(科目编码单元,1))<=54),or(len(科目编码单元)=4,countif(科目编码区域,left(科目编码单元,len(科目编码单元)-2))=1))通过以上科目编码单元的数据有效性条件设置,在录入会计科目编码时,系统进行符合科目编码方案的位数控制及科目统驭关系控制、会计科目编码的唯一性控制和编码第一位数据的限制等多方面的逻辑检查,违反数据有效性条件规定的数据将被拒于系统之外,提高了录入数据的可靠性。
参考文献:
[1]Excel Home.Excel 2010应用大全[M].北京:人民邮电出版社,2011,12. [2]Excel Home.Excel函数与公式实战技巧精粹[M].北京:人民邮电出版社,2008,08.