ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1065|回复: 6

怎么根据条件从表中把符合条件的信息剪贴出来呢?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-3-8 15:44 | 显示全部楼层 |阅读模式


我想根据条件表里面的姓名从明细表中把这些人的信息筛选并剪贴出来粘在目标表中怎么实现呢? 不知道什么原因高级筛选用不了又不能更改表头格式怎么办呢?

信息表.zip

27.12 KB, 下载次数: 8

TA的精华主题

TA的得分主题

发表于 2020-3-8 17:53 | 显示全部楼层
Sub test()
Dim d As Object
Set d = CreateObject("scripting.dictionary")
With Sheets("条件")
    ws = .Cells(Rows.Count, 1).End(xlUp).Row
    ar = .Range("a1:a" & ws)
    For i = 2 To UBound(ar)
        If Trim(ar(i, 1)) <> "" Then
            d(Trim(ar(i, 1))) = ""
        End If
    Next i
End With
Dim br()
arr = Sheets("明细表").UsedRange
ReDim br(1 To UBound(ar), 1 To UBound(arr, 2))
For i = 7 To UBound(arr)
    If Trim(arr(i, 2)) <> "" Then
        If d.exists(Trim(arr(i, 2))) Then
            n = n + 1
            For j = 1 To UBound(arr, 2)
                br(n, j) = arr(i, j)
            Next j
        End If
    End If
Next i
If n = "" Then MsgBox "没有符合条件的数据": Exit Sub
With Sheets("目标表")
    .UsedRange.Offset(6) = Empty
    .[a7].Resize(n, UBound(arr, 2)) = br
End With
End Sub

TA的精华主题

TA的得分主题

发表于 2020-3-8 17:54 | 显示全部楼层
信息表.rar (29.28 KB, 下载次数: 7)

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-3-8 19:28 | 显示全部楼层
谢谢 姓名有可能重复 我要是想根据员工编码或者社保账号查找怎么弄呢

TA的精华主题

TA的得分主题

发表于 2020-3-8 21:53 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
用VLOOKUP函数可以实现,

4个参数
=VLOOKUP(找什么,在哪找,结果所在列数,查找方式)

目标表D7单元格的公式:=VLOOKUP($B7,明细表!$B$7:$W$132,COLUMN(D3)-1,0)

1.$B7  固定列B列
2.数据所在区域:  
        在明细表中选中需要的数据,可以选中第一个数据(B7单元格)后按快捷键Ctrl+Shift+→→ +↓
        行列要固定死,快捷键F4
3.结果所在列:
        查找的姓名是B列,为选中区第1列;
        性别是D列,对应的参数自然是3

        设置colnum(单元格)获取单元格所在列
        D3单元格对应的4, 此时:COLUMN(D3)-1=4-1
        E3单元格的第三个参数就会对应5,        5-1                          
        =>目的:动态获取参数来保证可以横向拖拉填充
4.查找方式:
        False:精确匹配 ;可以简写0
        True:近似匹配 ;可以简写1 =>用于阶梯查找的情况

姓名重复的话在目标表里查找只能找到第一个符合信息的条件,
用员工编码或社保账号就能对应了.
对应的查找项要改成 $E7 和 $F7
查找区域和第三个参数的-1也要相应作出改变

信息表 (2).zip

30.91 KB, 下载次数: 9

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-3-9 12:54 | 显示全部楼层
谢谢啊 MATCH函数和这个COLUMN有啥区别啊

TA的精华主题

TA的得分主题

发表于 2020-3-9 20:52 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
你想问的应该是MATCH和VLOOKUP的区别吧,
COLUMN是获取单元格所在列数的函数.

{
MATCH:用于在指定区域内按指定方式查询与指定内容所匹配的单元格位置
        =>(确定列表中某个值的位置)
VLOOKUP:用于指定区域内查询指定内容所对应的匹配区域内单元格的内容
        =>(按列查找补全信息)
}

3个参数:
Match(找什么,在哪找,查找方式)
1.查找值

2.指定区域:
        必须是单列多行或单行多列

3.查找方式:
        1 :查找<=查找值的最大值位置              前提:指定区域升序排列
        例:
        A1=20
        A2=30
        A3=50
        查找40所在的位置 =MATCH(40,A1:A3,0)  返回单元格区域A1:A3最接近的最小值(30)的位置2

        0 : 查找完全等于查找值的位置 ,没有就报错           指定区域任意顺序排序
        例:
        A1=50
        A2=20
        A3=30
        查找20所在的位置 =MATCH(20,A1:A3,0)  返回位置2 ;
        查不存在的数40就会报错
       
        -1:查找>=查找值的最小值位置           前提:指定区域降序排列   
        例:
        A1=50
        A2=30
        A3=20
        查找40所在的位置 =MATCH(40,A1:A3,-1)  返回单元格区域A1:A3最接近的最小值(50)的位置1       
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-3-29 01:25 , Processed in 0.051902 second(s), 11 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表