天天看点

Excel写批量代码(一)

在做一些大型项目的时候,经常会用到许多的get和set方法。这些方法都不难,可以说除了里面设置的项目名称不一样外,剩下的部分都完全一样,如果都一个一个的手打的话,即便再熟练的程序员也得需要一段时间,更何况里面再添加的点注释,更是麻烦。虽然有了诸如orika这样的JavaBean拷贝框架,但是还是不能避免写这样的代码:

// 公司代码
outDto.getCompanyCode(inDto.companyCode); 
 // 合同书编号
outDto.getContractNo(inDto.contractNo); 
 // 文件路径
outDto.getFilePath(inDto.filePath); 
 // 房屋编号
outDto.getHouseNo(inDto.houseNo); 
 // 备注1
outDto.getXOther1(inDto.xOther1); 
 // 房屋面积
outDto.getSpace(inDto.space); 
 // 用户名
outDto.getUserId(inDto.userId); 
 // 楼层
outDto.getFloor(inDto.floor); 

           

一般的项目还好,倘若有上百个这样的项目这样写,不仅很累,而且容易出错。那么有没有什么好的方法使我们解脱出来呢?

Excel有着优秀的函数处理能力,我们可以用其来写这些重复度很高的代码。本文就以一个例子来详细说明如何使用Excel写模板化的代码。

假如说现在有一个房地产公司需要一个打印房租合同的项目工程,你拿到了关于合同书的那部分代码设计书,里面关于合同书具体项目的设定是下面这样一个表格:

Excel写批量代码(一)

你需要完成的成果代码要和最上面的例子一样。那么我们可以观察一下这个表格,已经给出了我们在代码里面的命名,同时“备注”这一项有很多个,我们在写代码时要用数字加以区分。

Excel写批量代码(一)

这是我写好的一个自动代码生成器的截图,你只用把上述表格的中文项目拷贝出来,放在汉字名称的下面,再点击一下右边的按键,表格的最后一栏就是我们需要的代码,而且是带注释的哦!

Excel写批量代码(一)

怎么样,是不是很方便?下面我就来教大家怎么做这样一个代码生成器

首选新建工作表,命名为list,把上面的题头先写进去。

Excel写批量代码(一)

然后再建立一个sheet,我们命名为项目一览,我们可以把上面合同书里面的所有项目做个汇总,放在“项目一览”工作表里面

Excel写批量代码(一)

接下来就是重头戏了,这个代码编辑器其实主要是Excel函数的使用以及VBA编程的相关内容。

我们先写第一栏,No,就是编号,如果汉字名称那一列有东西的话,就会把它的编号显示出来,所以应该使用的是IF函数

IF(判断逻辑,TRUE的情况,FALSE的情况)

我是这样写的:

=IF(LEN(B2)=0,"",ROW() - 1)

B2单元格的字符长度如果为0(其实就是空白的时候),函数返回空,否则的话,返回行号减去1(偷懒一下,我发现所有编号都可以拿行号来变换)

然后是第三列,项目别名,就是它的英文名称,这样的名称在大型项目里面有很严格的规约,甚至会直接给出一个类似词典的文件,编写相同项目时必须用一样的名称。我们这里就写一个查找的方式,在项目一览这个工作表里面查找,把查找结果返回。这里就是Excel的查找函数VLookUP

VLOOKUP(查找值,查找范围,查找列数,精确匹配或者近似匹配)

我是这样写的:

=VLOOKUP(B2,项目一览!$B$2:$C$9,2,0)

还是拿着B2来找,因为要跨工作表,所以在查找范围前面加上“项目一览!”来声明区域所在工作表,2表示选择区域的第二列,如下图所示:

Excel写批量代码(一)

第二列都是英文名称,正是我们所需要的。最后一个0代表精确查询。

项目总数一览用来统计该项目出现了多少次,我们用COUNTIF来进行计数

countif(范围,条件)

我是这样写的:

=COUNTIF($B$2:$B$100,B2)

条件直接写上B2,Excel会自动用B2在选择区域内一一进行比对

同理,项目计数用的方法类似,但是计数是要逐渐往上长的,因此我的写法为=COUNTIF($B$2:B2,B2),只是把范围更改了一下。

变换后别名我用到了VBA的相关内容,这部分我将在下一篇进行详细讲述。

继续阅读