邪恶的GFW,你就饶了我吧:(

2009-04-01

用VLookup实现编码

以前的工作经常需要对数据进行编码。所谓编码就是针对一个数据,用另外一个数据来表达。比如学生的成绩评定,90~100:优秀、80~89:良好、60~79:及格、0~59:不及格。这就是最简单的编码。可见编码是一件非常简单的事情,但它的用处非常大,这可是数字化的最基础手段!

编码虽然简单,但想在Excel中快速,简单的实现编码还是有许多技巧。

常用的是求商取整,但这种方法有以下缺点:
1)、区间间隔一致,无法实现变长区间
2)、只能实现数据到数据的编码,无法实现其他数据类型的编码

为了克服以上缺点,必须使用分段函数,但这又比较繁琐,今天使用Vlookup核对数据时,突然想到Vlookup可以较好的满足编码的需求,并有以下优点:
1)、简单方便
2)、区间间隔可以任意指定
3)、可以实现任意数据类型到任意数据类型的编码

下面是Vlookup的简单介绍。

VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)

lookup_value:可以是数组喔,此时该公式就是数组公式,别忘记用Ctrl+Shift+Enter输入。

Table_array:一般至少为两列数据。
其中第1列中的值是分界点,相当于[M1, M2),[M2, M3),……,[Mn-1, Mn)
注意:
M1必须是可能值中的最小值,否则一旦lookup_value小于M1,Excel会返回#N/A
Mn不必是可能值中的最小值,即使lookup_value大于Mn,Excel也会定位到Mn所在行

col_index_num:table_array中待返回的匹配值的列序号,该序号从1开始
注意:
col_index_num不得小于1,否则Excel返回错误值#VALUE!。
col_index_num不得大于table_array的列数,否则Excel返回错误值#REF!。

Range_lookup为逻辑值
如果为TRUE或省略,则返回精确匹配值或近似匹配值。
table_array第一列中的值必须以升序排序;
此时如果找不到精确匹配值,则返回小于lookup_value 的最大数值。

如果为FALSE,Excel将只寻找精确匹配值。此时table_array第一列的值不需要排序。
如果table_array 第一列中有两个或多个值与lookup_value匹配,则使用第一个找到的值。
如果找不到精确匹配值,则返回错误值 #N/A。

No comments: