Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 3126|回复: 8

满足条件精确查找

[复制链接]
发表于 2019-2-12 09:59 | 显示全部楼层 |阅读模式
本帖最后由 lidayu 于 2019-2-12 11:52 编辑

先祝老师新年快乐!请老师赐教要如何实现表中的要求。
满足条件精确查找.rar (269.13 KB, 下载次数: 30)
发表于 2019-2-12 13:03 | 显示全部楼层
回复

使用道具 举报

发表于 2019-2-13 14:26 | 显示全部楼层
这个属于多条件查找,可以使用公式LOOKUP来完成,通用公式:LOOKUP(1,0/((条件1)*(条件2)*(条件3)),结果所在的列)
回复

使用道具 举报

匿名  发表于 2019-2-13 22:42
tangExcel 发表于 2019-2-13 14:26
这个属于多条件查找,可以使用公式LOOKUP来完成,通用公式:LOOKUP(1,0/((条件1)*(条件2)*(条件3)),结果 ...

请问大侠,如果用VBA来做的话,要怎么做呢?
回复

使用道具

发表于 2019-2-14 19:42 | 显示全部楼层
April/疑问 发表于 2019-2-13 22:42
请问大侠,如果用VBA来做的话,要怎么做呢?

你的装箱单数据有问题,比如
警察战训帽
海铁公安处领导
袁国辉
1
这个在数据源根本没有,还有很多数据是没有的
回复

使用道具 举报

匿名  发表于 2019-2-14 20:04
dequang 发表于 2019-2-14 19:42
你的装箱单数据有问题,比如这个在数据源根本没有,还有很多数据是没有的

这份不是我的,不过我的跟他的有点类似,你能帮我看看吗?

4月计件.rar

212.23 KB, 下载次数: 147

回复

使用道具

发表于 2019-2-14 22:01 | 显示全部楼层
本帖最后由 dequang 于 2019-2-14 22:14 编辑
April/疑问 发表于 2019-2-14 20:04
这份不是我的,不过我的跟他的有点类似,你能帮我看看吗?

你第一个附件里装箱单有的部门数据源里的不大一致,帮你整理了下,大标题的合并单元格也还原了,你看下要上班了,没时间啊,后面的问题一样的话你自己改下吧

Sub 整理()
    '将"数据源"的数据放入数组arr
    arr = Sheets("数据源").Range("a2:f" & Range("a" & Rows.Count).End(xlUp).Row)
    '将"装箱单"中的数据放入数组brr
    brr = Sheets("装箱单").Range("a5:e" & Range("d" & Rows.Count).End(xlUp).Row)

    For i = 1 To UBound(arr)
        If Mid(arr(i, 3), 1, 5) <> "" And Mid(arr(i, 3), 1, 5) <> "海铁公安处" Then
            arr(i, 3) = "海铁公安处" & arr(i, 3)
        End If
    Next
    Sheets("数据源").Range("c2").Resize(UBound(arr), 1) = Application.Index(arr, 0, 3)

    For i = 1 To UBound(brr)
        If brr(i, 3) <> "" And brr(i, 3) <> "姓名" Then
            If Mid(brr(i, 2), 1, 5) <> "海铁公安处" Then
                brr(i, 2) = "海铁公安处" & brr(i, 2)
            End If
        End If
    Next
    Sheets("装箱单").Range("b5").Resize(UBound(brr), 1) = Application.Index(brr, 0, 2)
End Sub



Sub 录入装箱单()
    Sheets("装箱单").Range("e5:e" & Range("d" & Rows.Count).End(xlUp).Row).ClearContents
    '将"数据源"的数据放入数组arr
    arr = Sheets("数据源").Range("a2:f" & Range("a" & Rows.Count).End(xlUp).Row)
    '将"装箱单"中的数据放入数组brr
    brr = Sheets("装箱单").Range("a5:e" & Range("d" & Rows.Count).End(xlUp).Row)

    For i = 1 To UBound(brr)
        '装箱单的空行及标题行跳过
        If brr(i, 3) <> "" And brr(i, 3) <> "姓名" Then
            '以品种名称部门姓名性别作为关键字,如“大檐帽海铁公安处领导袁国辉男”作为关键字进行对比
            x = brr(i, 1) & brr(i, 2) & brr(i, 3) & brr(i, 4)
            For j = 1 To UBound(arr)
                y = arr(j, 1) & arr(j, 3) & arr(j, 4) & arr(j, 5)
                If y = x Then
                    brr(i, 5) = arr(j, 6)  '关键字一样则装入型号
                    Exit For  '在数据源找到时不再往后找,继续装箱单下一个关键字,减少运行时间
                End If
            Next
        End If
    Next
    Sheets("装箱单").Range("e5").Resize(UBound(brr), 1) = Application.Index(brr, 0, 5)
End Sub


回复

使用道具 举报

发表于 2019-2-14 22:02 | 显示全部楼层
April/疑问 发表于 2019-2-14 20:04
这份不是我的,不过我的跟他的有点类似,你能帮我看看吗?

你看下,要上班了,没时间啊,后面的问题一样的话你自己改下吧
回复

使用道具 举报

匿名  发表于 2019-2-15 13:31
dequang 发表于 2019-2-14 22:02
你看下,要上班了,没时间啊,后面的问题一样的话你自己改下吧

好的,我看看
回复

使用道具

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-9 01:57 , Processed in 0.483992 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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