前几天连云港物协的一次直播培训结束后,按照甲方要求,需要导出参加直播培训学员基本信息和考试成绩给对方。
在小鹅通直播平台后台,学员信息采集和考试成绩信息,导出后是两张不同的数据表,其中“学员信息表”(Sheet1)中“用户ID”对应了“考试成绩表”(Sheet2)中的“学员ID”,为了对方物协工作人员使用方便,需要根据两张表中相对应的“用户ID”和“学员ID”,将“考试成绩表”(Sheet2)中的“得分”信息,同步到“学员信息表”(Sheet1)中的“成绩”列中。

将两张工作表中的数据按索引字合并
熟悉EXCEL的朋友,这时候应该都会想到vLookUp函数,搜索、匹配,再同步。
说明:Sheet1是学员信息表,Sheet2是考试成绩表。
操作步骤如下:
在Sheet1中C列“成绩”的第二行,写入vLookUp公式:
=vLookUp(B2,Sheet2!B:D,2,0)
解读:将Sheet1工作表中B列各单元格的内容,在Sheet2工作表中的B:E区域中遍历,如果匹配到相关内容,则将从B列起第二列的单元格中的内容写入到C列对应的单元格中;

数据中包含Tab空格导致匹配不成功
写入后,往下拖动并在“成绩”列应用该公式,Excel显示:#N/A,数据缺失,在Sheet2的“学员ID“列中找不到可以和Sheet1中“用户ID”列中可以匹配的值。
仔细对照,Sheet1和Sheet2两张工作表中的“学员ID“和”用户ID“确实是对应和匹配的,不应该出现这种错误结果。
那么,问题出在哪里呢?
将两类ID数值拷贝到文本编辑器,这才发现,“考试成绩表”(Sheet2)中的“用户ID”值中,竟然有一个“前置空格“。这小鹅通程序员简直是神经病,这绝对是让人不能接受Bug。
幸亏,Excel还有一个Trim和Clean的函数,可以去除空格,
这好办呀,用Clean就可以去掉空格呀。
于是,将公式改为:
=vLookUp(B2,Trim(Sheet2!B:D),2,0)
=vLookUp(B2,Clean(Sheet2!B:D),2,0)
再试,仍然出错,没有效果。

在vLookUp中使用Trim和Clean函数无效
后来想到,是否是Trim、Clean函数的用法有误,Clean(Sheet2!B:D)这种用法是不正确的,而应该先在Sheet2中对数据进行处理后,再用vLookUp函数遍历呢?

Trim和Clean函数只对单一数据有效
先在Sheet2中新增C列,用Trim、Clean函数对B列数据进行处理,去除B中数据的Tab空格后,将结果填入C列;

Trim函数和Clean函数只对既然类型的数据有效
发现用Trim函数无法消除字符串中的空格,后来才知道Trim函数只对Space空格有效,对Tab空格无效;
使用Clean函数对数据进行处理后,然后在Sheet1中再用vLookUp进行数据遍历:

在vLookUp函数中慎用Trim和Clean函数
终于,问题解决了,Sheet2中学员的考试成绩被关联写入到Sheet1中的成绩列了。
小结:
1、vLookUp遍历的过程中,提示数据缺失,可能因为数据中包含“空格“(Space、Tab);
2、Trim函数只能去除字符串中的Space空格,但对Tab空格无效;
3、Clean函数只能去除字符串中的Tab空格,但对Space空格无效。