bowangbuqi 发表于 2019-5-5 20:25

【笔记】excelVBA一对多查询自定义函数

相信对大家来说,excel的一对一查询已经很熟悉了,那我们先回顾一下:
VLOKUP函数:
VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)

       参数               简单说明                          数值类型               
lookup value 查找值   
table array 查找区域
col index num 查找区域第几列
range lookup 精确/模糊查找 0-精确匹配   1-模糊匹配   
HLOOKUP函数与Vlookup函数的用法类似,这里不做详细介绍。更多内容,请查看链接:
VLOKUP函数

https://static.52pojie.cn/static/image/hrline/1.gif
MLOOKUP来了,一对多查询,你值得拥有:
//代替vlookup和hlookup的函数mlookup

Function MLookup(val, array1 As Range, array2 As Range, f As Byte) As String
'val 为要查找的值
'array1 要在其中查找的矩形区域,可单列(行) 或多行多列
'array2 是要返回相应值的与array1等大的矩形区域
'f 为0时精确查找,为1时模糊查找
Dim c As Range, FirstAddress As String
With array1
Set c = .Find(val, .Cells(.Count), xlValues, f + 1)
If Not c Is Nothing Then
FirstAddress = c.Address
Do
MLookup = MLookup & "," & array2.Cells(c.Row - .Row + 1, c.Column - .Column + 1).Text
Set c = .Find(val, c, xlValues, f + 1)
Loop Until c.Address = FirstAddress
End If
MLookup = Mid(MLookup, 2)
End With
End Function
这个函数的用法和vlookup类似;
{:1_899:}{:1_899:}{:1_899:}

https://static.52pojie.cn/static/image/hrline/2.gif
来吧,各位老大,愿意的话给一个热心值吧!!!!

木丁哂 发表于 2019-5-5 21:11

不是很懂

lizhipei78 发表于 2019-5-5 21:15

这个网上不是一早就有了

killer05 发表于 2019-5-5 21:24

pz5 发表于 2019-5-5 21:34

52pojie08 发表于 2019-5-5 21:50

多谢分享好方法,就是需要调用vba来实现,excel变成高手离不开学习下vba啊。

superlaomao 发表于 2019-5-6 08:59

在一系列公式区域里面查找特定值,可以做到吗?比如每个单元格等于其行号和列号的乘积,这个乘积是公式,那么在其中查找乘积后两位数是“53”(这个数是随便说的)的单元格,这个可以实现否?
页: [1]
查看完整版本: 【笔记】excelVBA一对多查询自定义函数