试着用白话文来讲讲策划手中的excel_lv3_现在!就从配置文件的繁重工作中解脱!

发表于2015-10-06
评论8 2.7k浏览

版权声明:本文无色瞳(@游戏中翻滚的无色瞳原创首发GAD-腾讯游戏开发者平台,版权所属,拒绝无授权转载 

1关传送门:http://gad.qq.com/college/articledetail?cid=3512

2关传送门:http://gad.qq.com/college/articledetail?cid=4131

 

其实除了某些大公司的策划是直接用编辑器以外,许多公司还在用着极其麻烦、枯燥、底层的配置文件。

简单的有装备、角色配置,麻烦的有剧情、任务配置等。

为了上一关说的举个例子,无色准备随手做个简单的装备配置,简单起见每件装备的配置大概就弄个这样的格式吧:

↑无色使用的文本编辑器,名为UltraEdit-32,我只管说名字别的自己搜

当然要获得图中那样的颜色区分效果,你还需要自己设置一下:视图-查看方式-java

 

好了回到正题:我们做款游戏,里面的装备可能会有成百上千件,因此利用excel批量配置解放双手是非常必要的

 

而为了实现这样的批量制作,我们则需要在一个excel里准备了三个简易的表

(工作表页卡的位置应该没人不知道吧,不知道的看左下角,Sheet1/2/3那一坨,双击重命名)

 

*接下来就是重点了,想学的同学要跟我一起做哦(≧へ≦)/

一、前期准备工作耗时大约3~5分钟)

我们从右到左挨个来说——

1Euip.Java

首先创建一个和配置文件同名的工作表表euip.java,进行配置拆解:

·顾名思义就是将原配置粘到excel,按照无论怎样配置都固定不动的部分和需要填写/改变的部分(图中有框线的部分)拆解好

·而特别用绿色填充的,则是无色的个人习惯,用于标记不重复项。只要配置文件没有大改,即使今后需要做改变,也只用动这些部分即可

·第一行不必说是无色新增的注释。无色已经不止一次地说过注释是个好习惯,会让你在今后需要找某一件装备的时候,更容易在整个配置文件里找到

·说到最后一行的深色部分——还记得如果上一关的宏里,有个如果查询到某行为空,则停止输出的判定吗?为了投(ji)机(xu)取(tou)巧(lan我们可以用注释用斜线代替分割线

 

 

这里介绍两种常规的注释手段:

使用“//”可注释整行;“/*……(省略号代表被注释的内容)*/”则可注释掉被囊括的部分

VB不同,我们遇到的大部分的注释都是采用这样的格式,至于小部分么……详询给你出配置文件的程序。

 

 

 

2装备表:

说到装备表,其实就是通常我们填配置前都会做一个的那玩意儿,配置文件的所有需要填写的内容其实都是从这里取的

*因为是单纯的配置示范因而攻防命都是取的1~9的随机数不要太较真,顺带提供一能随机出此效果的整数随机函数

=RANDBETWEEN(1,9)

关于随机函数的部分以后我们还会介绍更多不过这里这个就够了╮()_﹀)╭

 

3对照表

对照表有什么用呢?

不知道看过我做的这个对照表以后你心中有什么端倪

 

我们再来看看我们配置拆解

红线框出的三条,是我们无法从装备表直接获取,因为【装备表】里通常为了填写和查找方便,充斥着我们的自然语言

但是有了对照表,我们就能够达成通过自然语言间接获取

 

对照表的用途:将自然语言配置语言按照一一对应的关系的表示出来。有了它,我们不但能方便地查阅,更能利用查找匹配类的函数,直接将我们的自然语言配置文件所需参数

例如,我们会将:

4附带的准备工作:输入法词库协力(不喜可略过)

因为后面会用到越来越多的函数(真的是越来越多而在不记只用的懒人无色的主观意识里,脑袋里记忆函数是毫无意义的(我没有打算教坏小朋友!Σ( °Д °;)

所以无色有个偷懒专用的特别推荐——借助输入法的帮助

下面,让我们拿这一关即将用到的两种函数截图举例吧!

1,合并文本函数

CONCATENATE( , , )

2直接打开当前文档所在文件夹的嵌套函数

=HYPERLINK(REPLACE(CELL(filename),FIND([,CELL(filename)],99,),打开文件夹)

 

当然上面这些都不是输入法自带的,但是现在的输入法已经很智能了,不但可以自定义词库支持上传同步

无色认为:好记性不如烂笔头,烂笔头不如偷懒

至于如何弄自己的词库,还请大家善用百度,找到自己惯用输入法的词库文件对它进行长期的编辑和维护吧!(o゜▽゜)o一劳永逸,多劳多得哟!

二、正面突破正式配置做铺垫(耗时大约5~15分钟)

马上就要突入正文了我好激动呀!我们速战速决!

1查找匹配:VLOOKUPINDEX&MATCH大法

C右键-插入这个操作大家应该都会吧,总之插入后我们在D列加一列配置

 

然后光标放到D2,直接启用VLOOKUP大法

 

具体填法:

=VLOOKUP(C2,对照表!A:B,2,0)

 

这里简单解说一下VLOOKUP从左到右以逗号为界,分为4部分

C2代表C2位置内容【一把钥匙key

对照表!A:B匹配范围对照表A~B

2key所在列开始(包括key所在列)向右2数可更改,但如果要增加列数,相应的也需要修改匹配范围

0是否为模糊查找,默认是0(否),有需要我们再来说1(是)

总结:VLOOKUP具有根据key的内容,向右某列具体列数可自定义)查找key有着一一对应的关系(其实就是同一行)的内容的能力

定义(重点)在此例中,无色将原表C2的头定义为key对照表A定义查找列B列定义为返回列

那么问题来了——为什么要定义?

当然是为了节约你我的时间成本举一反三!!

比如这里有个VLOOKUP更好用

=INDEX(返回列,MATCH(Key,查找列,0))

此处应有笔记/词库录入

 

*VLOOKUP几乎是大家最常用的查找方法,但是只能够从左到右加上HLOOKUP从上到下再加上内存数组的运用我们才能从右到左,从下到上老实说,这用户体验让无色的内心几乎是崩溃的!!

而利用INDEX&MATCH嵌套大法你可以轻易实现上下左右任意查找

 

但大家不要误会了,我们并不能因为INDEX&MATCH嵌套大法好就将VLOOKUP淘汰了因为在有某些特殊需求(以后会讲)的时候,我们又能看到VLOOKUP大法的闪光。

 

现在,让我们回到原配置:

 

D2按下F2进入D2单元格的编辑状态,按下F4:

*这里的美刀符号$可以锁定相应的行or,锁定的用途,在于你直接大面积复制出去不会让其产生智能变化(你自己多按几次F4,复制出去实验一下啦)

 

2复制锁定

最后鼠标光标挪动到D2右下,直到光标变成一个小十字“+”,双击将下面也用相同公式填充的方法我想大家是会用的吧=_=

 

然后我们在E颜色的右边也插入一列空白列

 

D列直接复制到F(我们已经锁了,所以安心复制吧)

3几个函数

接下来我们要弄一个稍微有点复杂的,攻防命的配置

在此之前无色需要介绍几个简单的函数:

文本合并CONCATENATE

=CONCATENATE( , , )

 

用途:我们可以将需要进行合并的文本,以此函数直接合并在一个单元格里(不通内容以逗号分隔)

*当然你也可以用“&”来讲不同的文本直接合并起来。但是相信我,在你需要合并的东西很多的时候,这个长家伙才更方便你个人的阅读

 

字符计算:LEN

函数LEN用途:计算字符数(字节数用lenb

操作:无色在A列随意输入了3个内容,并在B1输入

=LEN(A1)

双击填充B2~B3

 

所以G2单元格空的时候,=LEN(G2)J2显示的结果是1(不为0

这个结果我们可以用于判断

判断:IF(非常有用)

IF函数可以简单解析成

如果怎么样,,否则

有此,我们可以举一些任意例子:

=IF(1+1>0,"","")

=IF(2,"2","不是2")

有了这个函数,我们能利用excel做大量判断

 

=IFLEN(G2)=0,1,0

J2显示的结果0说明这个怎么样

4、嵌套升级(重点)

介绍完了函数,我们终于可以正儿八经地通过嵌套,来完成我们的需求啦!

什么是嵌套这就是:

=IFLEN(G2)=0,1,0

定义:某个函数的返回结果,能被另一个函数作为参数使用,就能够称之为嵌套

简单来说,你要的许多功能或许不能用excel的单个函数直接实现,但是可以通过需嵌套这个组合技来搞定

例如:

=IF(LEN(G2)=0,"",VLOOKUP($G$1,对照表!A:B,2,0)&G2&"}")

 

这样J2就完成了这一项的配置显示接下来我们利用文本合并函数CONCATENATE,将一并加上来并双击填充下面几行

单元格内公式

=CONCATENATE(IF(LEN(G2)=0,"",VLOOKUP($G$1,对照表!A:B,2,0)&G2&"}"),IF(LEN(H2)=0,"",VLOOKUP($G$1,对照表!A:B,2,0)&H2&"}"),IF(LEN(I2)=0,"",VLOOKUP($G$1,对照表!A:B,2,0)&I2&"}") )

 

无色为了填写方便,对照表里攻防命的每一项参数前面都加了个逗号

 

显示结果的最前面也就有了个逗号

但逗号只是用来分割不同属性的,最前面那个我们并不需要。

所以最后一步,我们将K当作辅助列,用于去掉它

于是K列被命名为,配置·改

=RIGHT(J2,LEN(J2)-1)

嵌套解析:

LEN(J2)

计算出J2单元格内容的长度

 

RIGHT(J2长度-1)

J2单元格视为字符串(不懂字符串可以简单理解成这一格里显示出的最终文本本身,而非公式本身从右边开始取字符个数为“J2单元格内容的长度-1

这样这行配置的最终版本里,逗号就被成功去掉了

*像这种可以字符个数取文本的函数除了right以外(源字符串,取几个),大家还可以尝试看看LEFT(源字符串,取几个MID源字符串,第几个开始,取几个)函数哦

最终版本

其实若干属性用逗号隔开的填法,直接if也是可以做到的新人选手们也可以不要大意地尝试一下。不过无色觉得属性多的情况下,每个if里都要写个,&也是挺麻烦

 

到这里该铺垫的都铺垫完毕了,接下来无色认为是最爽的部分——

配置修改(耗时大约3~5分钟)

1再见了修改地狱VLOOKUP遇见COLUMN

前面的课程有好好学同学,现在已经可以迅速地,可以利用前面学的VLOOKUP填好各种空格了。

可能用着用着你就会发现VLOOKUP对于格式修改几乎是没什么招架能力的作为策划,你可能经常需要增加列、删除列,对其进行引用的VLOOKUP第三个参数“第几列”也就需要随之修改。

所以我们预判到源表格需要经常修改的话最好嵌套一个Column来取代这个第几列

如图,利用COLUMN(装备表!B2)函数,我们可以方便地获取COLUMN(装备表!B2)位置的列号。因为查找区域是从A开始的,我们不必做任何加减就是VLOOKUP函数第三条所需要的向右第几列

另外最后别忘了F4锁定一下,这样只要你不动A列,此外无论你怎么删除列、添加列、剪切粘贴的操作,该函数都能“第几列”这项参数自动定位了

完整公式:

=VLOOKUP(C1,装备表!A:M,COLUMN(装备表!$B$2),0)

 

2复制粘贴

接下来的比较简单:

1将第一个装备的配置复制粘贴到其下方,成为第二个装备的配置

2下第二个装备配置的编号改成“第一个装备配置编号所在单元格地址+1

3从第二配置开始向下拖动复制,直到全部装备的配置填充完毕

完成图

 

 

3最终步骤导出

还记得上一关里我们找到的导出宏它可以从第二行开始导出第一列,直到某一行没有数据位置

接下来我们自然是要按此对表格作出调整

A2单元格公式:=CONCATENATE(B2,C2,D2,E2)

下拉后就可以按钮导出啦

上一关讲过这个对不对

锵锵——

就算让你填10000条配置也难不倒你了对不对

 

Lv4预告只为更懒,配置导出再优化

越来越懒的感觉,你怕不怕?==

-3关完-

 

 

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引