Excel将A表的基础数据拼接到B表中来-三种⽅法:ctrl+回
车,VLOOKUP()函数,宏
A表基础信息表
B表业务信息表
将a表中的基础数据拼接到B表的后⾯,
应⽤场景是:
B表很多数据,很繁乱,名字不⼀定全,
A表也是⽐较多的⾏,B表乱:⽐如有8⾏有李晨的,却只有3⾏是范仲淹的,现在需要快速拼接:
⽅法⼀:不⽤函数,利⽤ctrl+Enter
两个表的数据合并放在⼀个表
B 列当做姓名,
C
D 列当做B表的学科和分数。
E
F G列当做A基础信息列。
A表复制过来的时候,要空出列,以便后⾯的数据可以接上B表的后⾯。【总的任务就是快速⾃动填 EFG列】
还有⼀点,两个表前⾯要加上⼀列标志列。如上图A表的左边加上A标志服,B表的左边随便加点标志。
对B列进⾏排序,发现要向上填充数据,不太符合本实践要求。
改进:全选所有列,⾃定义排序:对E列做次排序
变成
按照博⽂说的,选择列,Ctrl+G 定位选择空值在编辑栏中输⼊=上⼀个格⼦的地址,(是上⼀个值的
格⼦)再按CTRL+Enter完成填充这样就会⾃动往下填充了,整列完成,瞬间完成(我的⼏万⾏数据)。同时对多列是否可以操作,还没有试(后来试了,不可以)。
最后⼀步:把基础A表的数据删除:先将整个表的复制,到另⼀个新表格粘贴为数值(不要带格式的)
对表的A列排序,把A列中有A字符的⾏全部删除(这是A表的基础数据),完成。
⽅法⼆:⽤函数 VLOOKUP
VLOOKUP(参数1,参数2,参数3,参数4)
=VLOOKUP(要查的值、要在其中查值的区域、区域中包含返回值的列号、精确匹配或近似匹配 – 指定为 0/FALSE 或 1/TRUE)。参数2中数据区域,区域的第⼀列就是要查的列,区域后⾯列是要返回的列,
在D1中输⼊公式回车,快速下拉填完整列的公式
发现有些数据不到,明明在数据表⾥⾯的。【奇怪的是,同⼀台车,有些⾏可以到,有些⾏不到,有空格?】
下⾯⽹上的说法:
原因有以下⼏个⽅⾯:
1.字符串后⾯有空格。
2.数据类型不匹配。虽然有些数字看起来都是⼀样的,但有的是数值型的,有的是⽂本型的,这⼆者是匹配不到⼀起的。
3.有重复的数据。VLOOKUP只能查到第⼀个数据,后⾯的重复数据是查不到的。
但我数据没有空格,数值类型应该都是⼀样的,我觉得第3点⽹友说得不对。
我仔细分析,发现我写的是: =VLOOKUP(A1,车辆列表基础信息!B2:E1575,2,0) 猜想是区域数据,没有绝对引⽤造成的。
点击参数2 ,按F4 绝对引⽤。变成:=VLOOKUP(A1,车辆列表基础信息!$B$2:$E$1575,2,0) 问题解决。
-- 后来发现,函数⽤第⼀种写法,的第四个参数把0改成1 模糊查,也可以出值来。
vlookup模糊匹配--拓展:VLOOKUP 是纵向查, HLOOKUP 横⾏查。微软的excel ,点击函数帮助的时候,会跳转到此函数的中⽂教学视频。⽽wps没有教学视频。
⽅法三:利⽤宏,
wps需要安装 vbs模块,微软⾃带的宏默认是禁⽌的,需要启动。
本⼈⽹上下载的是 vba提取⾃WPS2012专业增强版,解压,点击 vba6chs.msi 安装,重启wps,打开有宏的xls,启⽤宏。
开发⼯具--查看代码-- 会跳转到VB编辑器
准备数据:本⼈将A表复制在B表的尾端,如下截图
1到2106是业务表的, 2110到 3683⾏是基础信息表的,(车牌字段唯⼀),写了个宏,超级简单就是两个for循环。代码如下:
意思:根据业务表的车牌去基础数据表中到这个车牌所在⾏并且把后⾯的的基础数据复制回来放到业务表对应车牌的后⾯。
Sub Macro1()
'
' Macro1 Macro
' 宏由 CLP 录制,时间: 2018/08/22
'
Dim x As Integer
Dim Y As Integer
For x = 1To2106Step1'外层循环循环B表所有车牌号码
For Y = 2110To3683Step1'循环A表所有车牌号码
If Range("a" & x).Value = Range("a" & Y).Value Then' B表查询A表的值
Range("B" & Y & ":" & "D" & Y).Select '选择区域
Selection.Copy '复制
Range("D" & x).Select ' 选择
ActiveSheet.Paste '粘贴
Exit For'退出内层循环
End If
Next Y
Next x
End Sub
执⾏⼀下,蛮久的(1分多钟),完成了。
==待续...
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论