第五部分 凭证打印
明细账录入完成,会计报表也生成完毕,下面就要打印凭证了。
根据凭证纸的不同,我们要设计不同的打印模板。这里仅介绍一种套打模板,凭证纸选用普通的手工账凭证纸,办公用品或会计用品商店有售。
设计思路
根据printkey,把每张凭证的记录按照凭证纸上的项目提取出来,填写在相应位置。
蓝色选框区域为打印区域,通过设置“打印区域”完成。
红色圆圈区域为关键字,辅助取数使用。
设计步骤
- 建立凭证打印表
- 根据凭证纸格式,在凭证打印表中绘制表格,调整好打印位置,可先预设数据观察打印效果,这里就是一纯手工活,慢慢调整到合适位置(如上图所示)。
- 公式及取数设置
- 年度:账簿年度,4位
- 月份:1-12个月,用数据验证设置下拉选择,格式为2位,不足2位前面补0.
- 凭证号:也是用数据验证设置下拉选择
- 凭证关键字:摘要信息、科目名称、交易日期、借方发生额、贷方发生额,这些是明细账中的部分字段名称,根据它们来取数。取数公式
B8=IF(ISERROR(INDEX(明细账!$A$2:$S$611,MATCH($C$1&$C$2&$C$3&ROW($B1),明细账!$U$2:$U$611,0),MATCH(凭证打印!B$5,明细账!$A$1:$S$1,0))),"",INDEX(明细账!$A$2:$S$611,MATCH($C$1&$C$2&$C$3&ROW($B1),明细账!$U$2:$U$611,0),MATCH(凭证打印!B$5,明细账!$A$1:$S$1,0)))
,复制到其他相应单元格(B8:C13,AH8:AI13)。该公式主要用INDEX()+MATCH()函数,从明细账中取数,用ISERROR()函数屏蔽错误值。 - 打印区域中的年、月、日:根据交易日期取出相应的值,公式:
D6=year(AG6)
F6=TEXT(MONTH(AG6),"00")
H6=TEXT(DAY(AG6),"00")
; 这里用TEXT()函数把月、日统一成2位数。 - 金额数字提取:把金额的每一位数字提取出来,填到对应的单位格中,一格一个数字,借方公式:
J8=IF(OR($AH8=0,$AH8=""),"",IF(LEN($AH8*100)<COLUMNS(J:$T),"",MID($AH8*100,LEN($AH8*100)-COLUMNS(J:$T)+1,1)))
,复制到其他相应单元格(J8:AF13)。
贷方公式:V8=IF(OR($AI8=0,$AI8=""),"",IF(LEN($AI8*100)<COLUMNS(V:$AF),"",MID($AI8*100,LEN($AI8*100)-COLUMNS(V:$AF)+1,1)))
,复制到相应单元格(V8:AF13)。
至此,凭证打印模板基本设置完毕,但还存在一个问题,就是本模板只能打印6行数据,如果凭证分录超过6行,则要另增加一个模板,打印区域增加6行,将公式从第7行开始设置,前6行隐藏,凭证分录再多,以此类推设置即可。
这里注意设置凭证号分号,如记账-004-1,公式:=IF(COUNTIFS(明细账!B:B,凭证打印!C3,明细账!O:O,凭证打印!C1&凭证打印!C2)<=6,C3,C3&"-1")
,这里判断某一号凭证的分录数是否超过6行,给出不同的打印凭证号。第二个模板的c1:c3,设置公式=第1张模板的相应单元格的值,打印凭证号=C3&"-2"
,后面类推。
最后,打印凭证时,选择月份、凭证号,进行打印即可,如果超过6行,再打印第2张模板。
The end.