Excel 将A表的基础数据拼接到B表中来-三种方法: ctrl+回车, VLOOKUP()函数,宏

A表  基础信息表

  

 

B表 业务信息表

  

 

将a表中的基础数据 拼接到B表的后面,

  

 

应用场景是:

B表很多数据,很繁乱,名字不一定全,

A表也是比较多的行,B表乱:比如有8行有李晨的,却只有3行是范仲淹的,现在需要快速拼接:

 方法一:不用函数,利用ctrl+Enter 

xls表格 ctrl+D 和ctrl+Enter区别 --快速填充相同数据,同时填充多个不同数据 - 海蓝steven - 博客园
https://www.cnblogs.com/rogge7/p/8075115.html  --利用这博文介绍

两个表的数据合并放在一个表

 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

复制excel指定内容到另一个表格     -- 开工前先看此例子
https://www.kafan.cn/A/enoj498kvw.html

  

 

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 是纵向查找, HLOOKUP 横行查找。 微软的excel ,点击函数帮助的时候,会跳转到此函数的中文教学视频。而wps没有教学视频。

方法三:利用宏,

   wps需要安装 vbs模块, 微软自带的宏默认是禁止的,需要启动。

本人网上下载的是 vba提取自WPS2012专业增强版,解压,点击 vba6chs.msi 安装,重启wps,打开有宏的xls,启用宏。

下载地址:http://dl.pconline.com.cn/download/470217.html

  

开发工具--查看代码-- 会跳转到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 = 1 To 2106 Step 1       '外层循环 循环B表所有车牌号码
      For Y = 2110 To 3683 Step 1    '循环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分多钟),完成了。

 

 

 ==待续...

posted @ 2018-08-22 11:04  海蓝7  阅读(4165)  评论(0编辑  收藏  举报