會計科目表是利用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.