批量自动制作档案盒侧封面模版(事务所和行政人员必备必看)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
批量自动制作档案盒侧封面模版(事务所和行政人员必备必
看)
由于我的工作是财务方面,很大一块工作内容是代理记账和代理申报纳税。
每个客户都需要建立一个档案盒以便存放该客户的各类资料,平均每个会计小组客户数约300多,有一次公司采购了一批新的档案盒,所有旧档案盒都必须更换,这样需要重新制作所有客户的档案盒侧面封面了,就是下面图1这种蓝色塑料档案盒画红圈部分。
我们一共有将近2000个客户,重新制作并打印档案盒封面的工作量不算小,于是我想了个办法用公式和VBA解决了一下这个问题。
图1
封面制作有2个要求:
1.为了方便查找,字体要尽可能大,所以字数不能太多,最好不超过5个字。
2.封面名称下要加上编号,便于结合电子版台账查找及按顺序在柜子里陈列
先解决第一个要求,我们这儿肯定有所有客户的名称台账,但是名称都是全称,比如”河北某某商贸有限公司“或者”邯郸市丛台区
某某商贸有限公司“,需要人为把公司名称的关键字给截取出来,这个工作量其实不小,得想一个办法解决,既然是截取一段文字中的部分文字,那肯定是用到mid这个文本类函数了。
mid函数很简单,这里就不作讲解了,请读者自行查阅。
为了使用这个函数我需要解决截取的起点,还要确定截取的终点(也可以说成截取的长度),由于公司的名称千奇百怪,没有固定长度和特定字符可以参考来分隔,截取的起点和终点都是变化的,需要找到一个规律来精准定位。
现在公司名称都有固定格式:区域+字号+行业+组织形式。
其中区域无非就是省名、市名、区县名开头,字号和行业这个太随机没有规律可参考,组织形式也相对比较固定,基本是公司、有限公司、有限责任公司、门市等结尾。
那现在思路就有了,以我所在地为例,公司名称一般都是河北(省)、邯郸(市)某区、某县开头,我只要确定这几个可能出现的字的在公司名称中的位置,并挑出来位置最大的就可以确定起点了。
那就使用find函数即可,结合数组分别查找'省','市','区','县','北'在公司名称中出现的位置(我这里查找'北'是因为我这儿有的客户公司名称是河北开头,而不是河北省开头,如果你是河南省的,可以改为'南'字),这几个字不一定全都会出现在公司名称里,比如某公司名称为邯郸市丛台区腾飞商贸有限公司,那么'省','县','北'这三个字就无法被找到出现的位置,会返回错误,这里再用一个iferror函数,如果出现错误就返回数值0(因为要确定出现最大的位置,所以这里没出现的直接换成0),现在iferror和find函数返回一个数组,值为{0,3,6,0,0},现在再用一个large函数,直接返回最大值6,那么我截取的起点就出来了,就是名称第6位字之后开始,就是第7位,公式为=LARGE(IFERROR(FIND({'省','市','区','县','北'},A2),0),1)+1。
见图2
图2
截取终点的操作逻辑是同样的,只是把返回的错误值用100代替了(只要写足够大就可以,1000也可以),然后large函数换成了与之相对的small函数。
公式为=SMALL(IFERROR(FIND({'有限','公司','门市'},A2),100),1),见图3
图3
有了截取起点和终点,那么截取长度自然就出来,直接做个减法即可。
然后mid函数必须的几个参数都有了,将上面几个公式组合到一起,就形成一个可以直接截取公司名称关键字的公式了,公式为=MID(A2,LARGE(IFERROR(FIND({'省','市','区','县','北'},A2),0),1)+1,SMALL(IFERROR(FIND({'有限','公司','门市'},A2),100),1)-(LARGE(IFERROR(FIND({'省','市','区','县','北'},A2),0),1)+1)),需要注意的是,输入完公式后不能直接按回车,由于运用了数组,要同时按下ctrl+shift+enter。
接下来解决第二个问题,刚才已经提到过了,我们这儿有客户的名称电子台账,只是这个名称肯定是一行一行显示的,由于封面是坚排文字,所以打印时纸张方向肯定设置成横向,经过测试,一张A4纸横向最多可以打印7列,如果再多字体就会太小了。
这导致名称不能直接复制粘贴,因为复制时是一列多行,而最张是需要做成了多行多列的,无法直接粘贴。
这里我用VBA来解决的,解决的思路是求整数和余数,对,你没有看错,用的是求整和求余来解决的,用求整来确定最终的行号,用求余来确定最终的列号。
用VBA来对名称做一遍循环,依次判断每个名称序号除以7.001之后的整数是多少,再判断该行序号除以7之后的余数是多少。
举例说明:再强调一下,我最终打印页面最多是7列。
比如某公司名称在原台账上是第15行,15除以7.001求整为2,再此基础上加上1,为第3行,15除以7的余数为1,为第1列(a列),则该公司名称出现在最终打印页面是a3单元格。
也就是说公司名称在台账中的序号除以7.001后的整数再加1就是其
在打印页面出现的行号,序号除以7之后的余数为1到6分别对应a 到f列(第1到第6列),余数为0则为g列(第7列)。
部分代码见图4。
这是我很久前写的,有很多不规范,名称定义很随意,请大家无视。
图4
现在提取公司名称关键字完成了,将提取完的名称关键字选择性粘贴(值)到打印模版上,再填充数字序号,点按一下模版右侧的按钮,公司名称就按要求每行7列瞬间依次排好了,然后将最终打印页面字体和字号按需设置即可,我设置是黑体54号,垂直对齐为分散对齐。
见图5、图6。
图5
图6
图6为了截图方便,我缩放到40%大小了,实际打印出来正好是档案盒侧面的宽度。
本文中一共用到两个模版,一个是截取公司名称关键字的模版,一个是将名称关键字重新坚排的打印模版。
截取关键字如果不满意,可以手工修改,基本90%都会截取满意的,打印模版可以根据自己需求更改,比如改成6列或5列,上面已经讲解了思路,可以直接修改即可。
上文中求整时除的是7.001而不是7,大家可以思
考一下为什么。
本模版适合会计事务所或者客户较多的单位或公司行政人员,想要模版的可以私信把邮箱发给我,我免费发给大家。
有了这个模版,我们2000个客户的档案盒封面全在3分钟内制作完成了,剩下的工作直接交给打印机就可以了。