试着用白话文来讲讲策划手中的excel_lv3_现在!就从配置文件的繁重工作中解脱!
版权声明:本文由无色瞳(@游戏中翻滚的无色瞳)原创首发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分钟):
我们从右到左挨个来说——
1、Euip.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、查找匹配:VLOOKUP和INDEX&MATCH大法
在C列右键-插入这个操作大家应该都会吧,总之插入后我们在D列加一列配置:
然后光标放到D2,直接启用VLOOKUP大法:
具体填法:
=VLOOKUP(C2,对照表!A:B,2,0)
这里简单解说一下VLOOKUP,从左到右以逗号为界,分为4部分:
C2→代表将C2位置的内容【头】为一把钥匙key
对照表!A:B→匹配范围是对照表A~B列
2→从key所在列开始(包括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做大量的判断
在J2显示的结果是0,说明:这个怎么样是假的
4、嵌套升级(重点)
介绍完了函数,我们终于可以正儿八经地通过嵌套,来完成我们的需求啦!
什么是嵌套?这就是:
=IF(LEN(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关完-