ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > 动画教程 > Excel VBA > 一对多查询,且左右无限制(Vloolup的升级版)附源代码

一对多查询,且左右无限制(Vloolup的升级版)附源代码

作者:绿色风 分类: 时间:2022-08-18 浏览:167
楼主
罗刚君
     Vlookup函数在所有Excel函数中算应用率较高的,根据指定条件查对目标时常用。不过它的缺点显而易见:只能一对一查找,不能从右向左查询。本自定义函数Look可以突破这两个限制。

函数名:Look
参数:4个
第一参数:查询对象
第二参数:数据源
第三参数:目标在数据源中的列数,省略参数的值时表示第2列
第四参数:从所有符合条件的目标是取第几个值,省略参数的值时表示取第一个。

 

一对多查询.rar


源代码摘自《Excel 2010 VBA编程与实践》第284页疑难141
2楼
い卋玑┾宝珼
罗总太强大了
3楼
YESS95
罗总就是达人
4楼
YESS95
向罗总学习
5楼
little-key
直接贴代码出来就可以了
6楼
bensonlei
的确很强大!研究研究!
7楼
mazy
为什么我返回的结果是#NAME?
8楼
罗刚君
要么没有启用宏
要么没有用我的代码
9楼
mazy
我以为把公式写进去就可以了。
启用宏 应该怎么操作呀?
10楼
xiakor
罗老师果然是MVP。
11楼
123w
给力
12楼
sherryhaihai
理解了不难,就是想不到啊,太强了!
13楼
墨弋
强大 感谢分享
14楼
墨弋
强大 感谢分享
15楼
sharkzhou
老罗是厉害
16楼
cookijie
感谢。。学习了
17楼
lslly
罗总太强大了
18楼
Gloria117
太强大了
19楼
tongliaozyr
支持一下!
20楼
raichu
原来是vba,刚开始看的时候还真试了一下,不行呐!哈哈
21楼
凯旋绝唱
不大懂 最后一个函数
look(E$2,B$1:C$12,0,ROW(A1))
数据源是B列到C列 最后怎么返回一个A列的数据?
请教达人赐教哈
22楼
double6969
想知道一个问题,能不能把这个函数添加到excel中,以后当打开每个excel表格时都能使用这个自定义函数
23楼
double6969
这样就能更加方便的使用 自定义的函数**求指导!
24楼
金玉满唐
学习了
25楼
meilijushui
向罗总学习
26楼
静悄悄的
没见到代码在那里呢?
27楼
罗刚君
一楼不是吗
28楼
opio小末
这个方法很实用啊 收藏啦  谢谢楼主
29楼
yuxinrong
罗老师
30楼
zzzzhhhh221133
好东西
31楼
YUEERYAORAO
良师啊,学海无涯
32楼
yezhia
赞!谢谢!
33楼
yezhia
赞!谢谢分享!
34楼
sweetiez
太高级,下来试试!谢谢
35楼
Justinhz56
研究了一天,终于搞定。楼主强大啊!造福办公族~
36楼
duqiaochai
这个太好了,解决了vlookup的缺点
37楼
xMash
非常感谢 这个是很常用的~
38楼
celia_xsy
我在2010版本做=look(E$2,A$1:C$32,3,ROW(A2)) 结果=#NAME?
39楼
luoyehome
很好,很强大
40楼
warship99
学习学习~~
41楼
/ty有谁共鸣
42楼
rainbow0802
太厉害了~~~ ,这个简直是万能用啊~
43楼
空竹
lz好强大,滋滋滋吱吱
44楼
hustclm
学习了,谢谢罗总
45楼
netnet
求助:罗总,我试用的时候,总是查找到空值,我的数据从第二列开始,是否需要改代码? 如何修改?
46楼
罗刚君
公式是什么,上传工作簿
47楼
jijiafei
学习
48楼
Icy_Tsoi
如果查找对象位于左边第二列呢,第3参数用什么?依此类推呢。
49楼
jijiafei
学习
50楼
flyer
如果查找到的是唯一值就好了,那就不用再删除重复值了
51楼
罗刚君
     Vlookup函数在所有Excel函数中算应用率较高的,根据指定条件查对目标时常用。不过它的缺点显而易见:只能一对一查找,不能从右向左查询。本自定义函数Look可以突破这两个限制。

函数名:Look
参数:4个
第一参数:查询对象
第二参数:数据源
第三参数:目标在数据源中的列数,省略参数的值时表示第2列
第四参数:从所有符合条件的目标是取第几个值,省略参数的值时表示取第一个。

 

一对多查询.rar


源代码摘自《Excel 2010 VBA编程与实践》第284页疑难141
52楼
い卋玑┾宝珼
罗总太强大了
53楼
YESS95
罗总就是达人
54楼
YESS95
向罗总学习
55楼
little-key
直接贴代码出来就可以了
56楼
bensonlei
的确很强大!研究研究!
57楼
mazy
为什么我返回的结果是#NAME?
58楼
罗刚君
要么没有启用宏
要么没有用我的代码
59楼
mazy
我以为把公式写进去就可以了。
启用宏 应该怎么操作呀?
60楼
xiakor
罗老师果然是MVP。
61楼
罗刚君
大不一样
再看一次吧
62楼
haige007
今天恰好需要这个函数
63楼
3a3a3a848
very gooooooooood
64楼
巳婉卿
的确很强大!研究研究!
65楼
青青de爱昵
希望能够解决现在的难题。好好学习
66楼
a8507024
这个函数很不错啊。。
关键如何是添加到excel里面经常使用啊
67楼
jiangweifujian
我要的是所有结果都在同一单元格中以逗号分割呢?
我用自定义函数这么弄:
Function 汇总(arr1, val, arr2) '被查询区域,查询值,结果区域
i = 1
a = ""
For Each b In arr1
    If b.Value = val Then
        a = a & WorksheetFunction.Index(arr2, i) & ","
    End If
    i = i + 1
Next
汇总 = Left(a, Len(a) - 1)
End Function
但是数据量和要的结果多的时候,非常卡,完全没法用.
后面别人提供Contxt的自定义函数然后这样写公式:
=SUBSTITUTE(contxt(IF(B2:B7=B10,C2:C7&",","")),",",,COUNTIF(B2:B7,B10))
club.excelhome.net/thread-1081229-1-1.html  这个帖子
虽然快一点,而且可以多条件多条结果合并,但是老问题还是很卡啊,还是完全没法用.还请高手指点下如何才能快捷的把符合要求的数据一把抓出来?谢谢!
68楼
liuyi2003
本社区原创畅销书
当当网   |   京东网
亚马逊   |   苏宁网
包罗上千疑难问题
从零基础开始学习
总销售量十多万册
全网热卖好评如潮
罗总就是达人
69楼
lrlxxqxa
给力
70楼
海洋之星
谢谢分享,学习了
71楼
亡者天下
学习了,谢谢分享!
72楼
Homy
谢谢分享
73楼
abcdabcd
又学了一招
74楼
Smallk
还不错,升级了更好用了
75楼
kjmtip
原来第四参数是这样用的
76楼
刘彦江
非常感谢
77楼
coldside

太厉害了,果断膜拜大大
78楼
jlcczc
罗版主威武啊!
79楼
zerosemo
的确很强大!研究研究!
80楼
sanaki
同问
81楼
yeminqiang




82楼
gshshzr
收藏学习
83楼
老糊涂
学习了
84楼
大鸟
请问这个宏怎么使用呢,我输入公式后都是显示#NAME?

85楼
罗刚君
你没输入代码吧
86楼
還莈娷醒
87楼
slqin
很好的经验,受教了。
88楼
myriad_buddha
学习了
89楼
狼的分身
非常强大
90楼
幽灵0519
太强大了
91楼
yeminqiang




92楼
gshshzr
收藏学习
93楼
老糊涂
学习了
94楼
大鸟
请问这个宏怎么使用呢,我输入公式后都是显示#NAME?

95楼
罗刚君
你没输入代码吧
96楼
還莈娷醒
97楼
slqin
很好的经验,受教了。
98楼
myriad_buddha
学习了
99楼
狼的分身
非常强大
100楼
幽灵0519
太强大了

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap