有excel大神给看看这个表数据怎么提取

  • a
    ananasky1979
    因为疫情又来了,村里所有的表又要重填一遍,看了下工作量太大了。大神们帮忙给看看我想把表A里的姓名、性别、年龄、身份证号、联系电话分别提取出来填到表B里对应sheet的栏里,有简单点的方法吗,现在一个一个复制粘贴太麻烦了,估计晚上要通宵。。。,感激不尽


    表A




    表B
  • 后来呢
    “=”


    没有提取吧
  • a
    ananasky1979
    表A是有数据的,因为涉及到身份证号和电话,我给删了
  • y
    yrrehc
    目测它这个表标签页有点多,"="也得做到天荒地老,还是要上vba把工作表历遍一遍才行
  • n
    ningningbobo
    一个个复制粘贴?不能一起复制粘贴?实在没懂。A表数据已经是单独的了?那不就是批量复制粘贴?
  • g
    gamefwh
    vlookup就能做到了吧
  • a
    ananasky1979
    excel小白请教,vlookup一直出错,出不来具体数据。。
  • a
    ananasky1979
    A表和B表的列不一样啊
  • i
    ipkm
    常规做法用vlookup,这个函数好理解,下拉一下就ok了,每一列分别修改下就行了。高级点的做法可以考虑数据透视表,这个有点复杂,看你能不能研究明白了。
  • a
    ananasky1979
    这个表A和表B是每户一个工作表,Vlookup的话怎么能做到呢
  • i
    ipcall
    正解,楼主百度下吧,前两天才做了类似的工作。
  • m
    muyiyuchen
    格式没错的话用熟悉的语言写个程序其实挺快的……建议可以学个python一类的以后处理类似的重复性高没什么技术含量的工作……
  • a
    ananasky1979
    时间有点紧,百度了一下,一头雾水啊
  • 小男孩
    vlookup应该不行吧。。等大神
  • 吉跋猫
    Vba For each遍历工作表,难度系数0
  • a
    ananasky1979
    求详解
  • 吉跋猫
    Sub foreachwbk()
    Dim wa As Workbook, wb As Workbook
    Set wa = ThisWorkbook
    Set wb = Workbooks("目标表")
    Dim ws1 As Worksheet
    Dim ws2 As Worksheet
    Dim 姓名$, 性别$, 年龄%, 身份证号$, 电话$, maxrow%, 工作表名
    For Each ws In wb.Worksheets
    maxrow = ws.Range("B65536").End(xlUp).Row
    原工作表名 = ws.Name
    Set ws2 = wb.Sheets(原工作表名)
    For I = 5 To maxrow
    j = 5
    姓名 = ws.Range("B" & I).value
    性别 = ws.Range("C" & I).value
    年龄 = ws.Range("D" & I).value
    身份证号 = ws.Range("E" & I).value
    电话 = ws.Range("P" & I).value
    ws2.Range("a" & j).Value = j - 4
    ws2.Range("B" & j).Value = 姓名
    ws2.Range("C" & j).Value = 性别
    ws2.Range("D" & j).Value = 年龄
    ws2.Range("E" & j).Value = 身份证号
    ws2.Range("F" & j).Value = 电话
    j = j + 1
    Next I
    next

    Set wa = Nothing
    Set wb = Nothing
    End Sub

    VBA放在表A,目标表名字改成表B名字,试一下吧,看有没有错误,我没有表格,没法测试
  • a
    ananasky1979
    感谢老大,您太牛B了,我试试
  • l
    lee410943861
    =VLOOKUP(B3,Sheet1!A:B,2,) 参考吧- -!
  • a
    ananasky1979
    我现在表A和表B是两个文件,A文件有若干工作表,每张工作表是一户,内容是每户成员的信息。B文件是也是每个户名是一个工作表。现在想的是把A文件里每个工作表里姓名,性别,年龄,身份证号和电话填到B文件里对应的工作表的对应栏里
  • 吉跋猫
    对呀,你把A表另存为XLSM格式,表B也同时打开,Set wb = Workbooks("表B的名字")这里改一下

    这个就是遍历表A里面所有的工作表,并以A表的B列的找到有内容最大行,一个个粘贴到同名字的表B里去
  • a
    ananasky1979
    比如我A文件我另存成A.xlsm ,表B是B.xlsx,我需要改哪里了,您这个我是一点也看不明白。。
  • a
    ananasky1979
    我直接把Set wb = Workbooks("表B的名字"),改成Set wb = Workbooks("b.xlsx"),运行提示类型错误。。
  • 静静的
    一个sheet的顶部有合并单元格,并且顶部部要有东西(不能是空单元格)
  • 静静的
    A上的数据填入B说话,一个不是这个问题了
  • 吉跋猫
    去掉后面的.xlsx,程序放表a的vbe中,打开表b后再运行
  • a
    ackoly
    兄弟,Excel是生产力,你知道吗
  • 赫敏
    hlookup()
  • 霹雳火
    再来表又得调,提供个另类的思路,用ACCESS,每次来新表,把表头做成查询,输出结果后仅粘贴值即可
  • s
    summeren
    如果两个表样一样 可以先把a表最后一列添加工作表名以后合并到同一个工作表,b表用条件查询多汁
  • s
    summeren
    没写完,补上。 b表用 index small if 查询多个值,b表写工作全选工作表写
  • f
    fishdzy
    是否有现成的人名清单?
    有的话,用Indirect将人名组成工作表名,可以解决。
  • s
    summeren
    现成的人员名单用vba读取一下 工具很多,我想学习如何用indirect解决
  • q
    qdmbp
    链接:https://pan.baidu.com/s/149PxE73qu6Umu-96P86-dw提取码: qxpq


    表1是原表

    表2是自动填写的表

    你看是这个意思么?

    因为你表2的行识别码是序号,表1是排查对象,不一样。所以表2的序号需要先用表1的排查对象,等都导过来了,就像我现在的表2一样了,需要全选-->选择性粘贴值,然后把序号改成1、2、3、4……


    需要放在D盘下的“新建文件夹 (3)”下看效果。excel不支持相对地址引用,只能绝对